Posts

Showing posts from 2019

Final Report: GSoC 2019

This is the final report for project  Extending ModelPolisher to a universal model annotation tool  under Google Summer of Code 2019, organization: NRNB . ModelPolisher is a model annotation tool originally developed for the BiGG Models Knowledgebase. Annotations enhance the reusability and interoperability of biological models. During this project, I extended the model annotation capabilities of ModelPolisher, updated the MatlabParser (reading models in the COBRA matlab format), containerized ModelPolisher using Docker, added functionality to use AnnotateDB for model annotation, and added a feature to produce a model annotation glossary and CombineArchives as outputs. As part of this work, the SQLite version of the ModelPolisher database backend could be removed. Link to G ithub Project:  https://github.com/draeger-lab/ModelPolisher The project proceeded according to the goals and timeline of the project  proposal ,  except for one major change: I completed my goal of contain

Week 12

Greetings! After completing the code for the production of the glossary file, my next task for this project was to give the user an option to produce the output in form of a Combine Archive which contains the polished model and the glossary file. This feature may look redundant now, but it is very helpful to keep biological models in differents formats in one Combine Archive which also contains a single glossary file which has all the annotations from the polished model. So, for this task, I first added an option `--output-combine` for users in which they can provide a boolean to produce output as a single Combine Archive. After addition of this option, if the user provides value `true` for this option, I use binfalse/CombineArchive  repository to put in the output polished model and the glossary file in a Combine Archive zip. Note that, in this case, any annotated model or glossary rdf file will not be produced. There were multiple issues during the implementation of this fe

Week 11

Greetings! I hope you are in great health. As my previous week had been very busy due to online tests and interviews during an internship drive in my college, I wanted to complete the next task for this project, that was to produce `glossary` files in `rdf` format takin inspiration from  this  file. To get an idea, please look at this  model  and its respective  glossary file  in  this  folder for non-standardised SBML for  BIOMD0000000176.  Here you can observe that all the annotations from the model are extracted and are put in as children of a single XMLNode. The glossary can be linked to the model by `rdf:about` tag which basically contains the `metaid` for various elements from the model. This glossary file becomes important and purposeful when you consider models which are hard to annotate. Biological models of the same thing can be present in various formats and it can be hard to annotate models in some formats whereas others (like SBML) can be easily annotated (with pre

Week 9, 10

Greetings! The following blog contains my progress in Week 9, 10. In the last days of the previous week, I had already integrated AnnotateDB in ModelPolisher but it was not yet properly checked. So, this week my major goal was to completely check the integration of AnnotateDB and solve bugs (if any). Also, I had to update the README file to provide proper instructions for users to add annotations from AnnotateDB. Testing AnnotateDB Integration:   I had already tested the to query to get the annotations from ADB using BiGG Id of species and reactions, so here only ModelPolisher was tested for successful extraction of annotations from ADB. Issue Observed : After I had added support for ADB in ModelPolisher, I tried to polish some random models (after temporarily removing code to extract annotations from BiGG DB). I observed that ModelPolisher is not making queries to ADB while the extracting annotations from ADB in class `AnnotateDB`, but rather the queries are being made to BiGG D

Week 8

Greetings! As mentioned in the previous blog my targets for this week included: Test containerization completely. Add updates to README about containerization. Solve the  issue  of restructuring ModelPolisher. Open PR for the above tasks. Figure out and test queries for getting annotations from ADB. Complete integration of AnnotateDB . I was able to complete most of these tasks, here are the details: CONTAINERISATION:  The ModelPolisher is successfully containerized, and is available here currently. ModelPolisher has been divided into three containers/services, namely - BiGGDB, ADB, Java. The first two services host the respective databases with Postgres as base images, the third service with OpenJDK-11 as the base, is used to run ModelPolisher jar in a container. The containerization of ModelPolisher has been successfully tested by me. The ModelPolisher can now be run simply in two steps: Run `docker-compose up` Polish models using `docker-compose run` command. Mor

Week 7

The last meeting was held on Friday, 5th July. Unfortunately, I was not able to join the meeting due to a family emergency. I would like to thank Thomas for updating me with the discussions in the meeting. Discussion in the meeting (5 July) :  The core of AnnotateDB  is finished and is available as Docker containers. Probably, ModelPolisher will use the database by querying annotatedb as postgres database. AnnotateDB may be used in the future for BiGGID  resolution, and to annotate elements in models. Release versions of ModelPolisher maybe distributed on docker-hub in future. TestCode for current code of BiGGID resolution: Can set up a small DB instance, and fill it with the subset of data necessary from BiGG to query against, i.e. feed the data into the database in the test setup code (BeforeClass), test your code, remove them again in the tear-down phase (AfterClass). Some script creating the database might be necessary here. We can use a small model containing only some s

Week 6

Greetings! This blog details work done from 1st to 5th July, and issues to be addressed in next meeting. Progress this Week The issues in focus were: ModelPolisher updated to openjdk-11. Containerisation:  I tried to build a container for ModelPolisher which contains ModelPolisher jar, openjdk-11, postgreSQL, BiGG db(restored in potgreSQL). I was earlier trying to build docker image using docker-file, but I came across docker-commit, in which I made all the required changes in a ubuntu base image and committed the image to form a new one. This completely worked, this was a quick way but not good for shipping images. It will also cause the image's size to be very large and making a change in image would be much problematic in future. After trying these possibilities, I plan to write a docker-file to containerise docker by this weekend. Also. note that the image will be interactive and user will be able to give inputs and get outputs by mounting volume to the container.

Week 4, 5

Greetings! This blog contains work done in week 4 and 5. It can be noticed that till week 3 I had completed most of the work in the background, updating Matlab Parser was still left, but neither had I pushed my code, nor did I check my code with ample test cases. Not directly working with the codebase is easy, but once the concept is understood and is clear, it is really desirable to check it by adding to the actual codebase and very importantly get suggestions from the mentors. Week 4 was hectic and was spent on adding all the work to the codebase and solving the Matlab parser issue. Here is a short detail about each issue and its solutions, solved in evaluation 1: Extend ModelPolisher annotation capability ( #39 , #41 ) : Issue: Add feature in ModelPolisher to add annotations to species, reactions, and geneProducts which do not have Bigg Ids. Solution: For species, reactions, geneProducts already some annotations, we can map the annotation URIs to their BiggIds.  Details

Week 2, 3: Work in Background

Greetings! As I have not posted the blog for week 2, thus this blog will contain all the progress made in the project during week 2 and 3 both. In the first week, I had majorly completed learning Postgresql and JDBC which prove to be of very much use in these two weeks. Also, there were major discussions regarding change of focus for this project, as proposed by Matthias Koenig, which I will cover here. The milestone for the evaluation one focuses on extending the ModelPolisher annotation capabilities for models and elements of models which do not have proper BiGG Id( issue #39 ). It's obvious that we need some data from that element to map it to its BiGG Id. It was finalized to use the data present in the form of annotation in the ModelPolisher and map it down to BiGGId of the particular data (to the best of my current knowledge, that was the only way of getting the BiGG Id). For example, the annotations may contain one or more references like  http://identifiers.org/cheb

Week 1: Build and Understand

Greetings! Yesterday marked the ending of the first week of the coding period. At the start, I was quite overwhelmed with the codebase as for the first time I was working with software using mostly in-house libraries, and as I am not familiar with bio-informatics so I could not intuitively understand the purpose of various functions, which posed one of the biggest problems. Following is the summary of proceedings in the first week: Learning PostgreSQL and JDBC:    As ModelPolisher is written in Java and for ModelPolishing it uses the BiGG Database, thus it is mandatory for one to have a good understanding of PostgreSQL Queries and Java Database Connectivity. This was one of the first tasks I completed this week. Meeting:   Discussion on Code:  As I was having trouble understanding the purpose of various functions, I asked my mentor, Thomas, for his help. Thomas arranged a meeting on 29 May, the following were discussed: Data-flow in ModelPolisher codebase and purpose of vari

Community Bonding Ends!

Greetings! Yesterday, the community bonding period was completed. I feel excited and overwhelmed as I enter the coding period, though I am sure GSoC 2019 will prove to be a great opportunity in learning various technologies and contributing towards my first open-source project. During the community bonding period, I had two meetings with the mentors, specifically in 17th and 26th May. The first meeting proceeded with our personal introductions and a small discussion about how and why the project was initially developed. This GSoC project will not only improve the ModelPolisher but provide inter-cultural work experience to the student and the mentors. Also, the following guidelines will be followed in this project: Use of GitHub Project tool for maintaining project workflow abstractly. Open a branch develop  from current master . All the features and bug fixes will be added to this  develop  branch. After completion of a group of bug fixes or features,  develop  can be merg

Getting Started

Hello readers! I am a CSE student at Indian Institute of Technology, Roorkee. I have recently been selected as a student in GSoC 2019 under the open source organization    National Resource for Network Biology  (NRNB). I will be working on the project - " Extending ModelPolisher to a universal annotation tool ". I am really thankful to Google and NRNB for accepting my proposal and especially to my mentors  Jun.-Prof. Dr Andreas Dräger, Dr Matthias König, Thomas Jakob Zajac who also helped me prepare the proposal. I look forward to learning extensively this summers. This blog series is dedicated to sharing my progress in the project throughout the GSoC period. As I will be working on ModelPolisher tool , here is a brief introduction of ModelPolisher and my project: ModelPolisher is a tool which accesses BiGG Models Knowledgebase to annotate and autocomplete SBML models. My project aims towards extending ModelPolisher annotation capabilities for models lacking BiGG I