Posts

Showing posts from June, 2020

The Week 7

Greetings, Glad to inform you that we have completed the metadata classes along with the reading and writing of models using the new annotation structure in various formats. This is completely backward-compatible, with many issues fixed and is completely lossless to any type of information. The annotation attribute of a given component now stores the external resources i.e CVTerms, history of that component, and a list of key-value pairs (introduced in FBA package version 3). Simply calling the "annotation" attribute of a given component will return data in the old format, and it will be synchronized with the data stored in the "cvterms" attribute. I have been modifying these classes from the last few days, making them more clean and simple, as instructed by mentors. Tests for these classes were also added last week, and they are all working fine. The tests are made small and independent to test each and every functionality, so they can be easily understood. Th

The Week 6

Greetings, We met twice last week (Thursday and Monday) because the mentors suggested some changes to the code last Thursday, which I had to include by Monday. They also wanted to go through the code and do some refactoring. Matthias proposed an idea which would lead to complete backward compatibility for annotations, and would also not cause any information loss, a thing which I thought would not possible to achieve simultaneously. Here's the idea: First of all, we are going to have a main Metadata class which is going to store all the meta-information like the external resources linked to that component (Controlled Vocabulary terms, or CVTerms), history of that component, and listofKeyValue pairs present inside the annotations, a feature introduced in FBA-v3. We are going to have classes for each of these three inner metadata information, and an object of each class inside the Metadata class. The annotation of a component will be an object of this metadata class and y

The Week 5

As scheduled, we met again last Thursday i.e on 11th June. When I entered in the conference call, Andreas and Matthias were already there and discussing something. We soon started our discussion. This time, I was required to implement all the necessary meta-data classes to completely have support for annotation in COBRApy. As we discussed earlier to have these meta-data classes behave exactly like "dictionary" of python, basically doing " Duck Typing" , I thought it would be better if I inherit these classes from "dict" and "list" themselves, and override their corresponding methods of setting values by putting the restrictions which we want to have on the annotations. So I made the following classes: CVTerm class, by inheriting from dict, which will handle the external resources linked to that component, History class, again by inheriting from dict, that will keep a track of the History of that component, ListofKeyValuePair class, by inh

The Week 4

As per the schedule, we met for the fourth time on 4th June. Again, it was a wonderful meeting. I and Andreas arrived a few minutes before, so we discussed the project's progress first, I told him we had completed the Milestone 1.3, and then we looked at a few issues which I had solved. We also discussed about the COBRApy community, which was a little less responsive towards our project. Matthias arrived soon. He suggested we should ask on the Gitter channel of the COBRApy that where should we put our introductory mail. I posted it there and am waiting for the reply. The mentors then started reviewing the code. The code was overall good, they both appreciated it. Matthias suggested a few changes, or more generally, a few "python tricks", to make the code look more better. I later made the changes and pushed them on Github. We further went to look after one of the most important parts of the project, handling of annotation inside COBRApy, which is right now very minimal