Skip to content

Instantly share code, notes, and snippets.

@debashish05
Last active August 22, 2020 21:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save debashish05/e1ec288a81d77e0fe61cbf336d147109 to your computer and use it in GitHub Desktop.
Save debashish05/e1ec288a81d77e0fe61cbf336d147109 to your computer and use it in GitHub Desktop.

Links

Project Description - https://summerofcode.withgoogle.com/projects/#4517004372869120

Project Proposal - https://docs.google.com/document/d/1Nm65LrLh5gddUhEkLd3WY26q1n8amyBltYZ9iTH5tms/edit?usp=sharing

Blog - https://debashish98.blogspot.com/

Repositories Worked On - https://github.com/sys-bio/roadrunner and https://github.com/sys-bio/rrplugins

Pull request - sys-bio/roadrunner#670

Work done

  • RRPlugins have been integrated with Libroadrunner. So we don't require a separate build for rrplugins. Earlier this task was achieved in my last year project. But the problem is the change in roadrunner will force the plugins to need to rebuild, which is not the case now.
  • Build time will reduce since the plugins and roadrunner are not interdependent.
  • Updated all the plugins (https://github.com/sys-bio/rrplugins/tree/master/plugins/released), in the current system. Earlier these plugins were not working due to outdated wrapper and some minor bugs.
  • Updated Python wrapper for rrplugins with CPython.
  • Ported addNoise and testModel plugins to the new architecture where building roadrunner doesn't affect them. The new system works on passing the structure of function pointer from the host to dll. It is based on https://github.com/sys-bio/PluginSystemExample.
  • Porting optimizers to work in Python 3.

Work to be done

  • Port optimizer to the new system, the main problem arrives when we try to optimize the parameters and skip some species. Like if the model consists of 3 species S1, S2 and S3 and parameters k1, k2 and we try to optimize k1 and k2 based on species S1 and S3 it will not work. The code is not designed to handle this problem.
  • Adding differential Evolution optimizer.

Challenges

  • While integrating Libroadrunner with RRPlugins, RPlugins has a dependency on Libroadrunner. Removing the dependency in such a way that changes in roadrunner or plugins doesn't need to rebuild plugins or roadrunner respectively, is a tough task. Fortunately, my Mentor came out with a model to pass data through a structure of function pointers.
  • Porting plugin to the new architecture was a tough task. Because of the new architecture that uses C API and when plugins call these API, the data need to be converted from C to appropriate types.
  • Unplanned online semester exams in between the GSoC period is taking a lot of time.

Overall, the GSoC journey has been a tough one. The learning curve is very high and learned many new things. There were many days when I used to work all day. I didn't get complete 3 months for GSoC due to my exams. Thanks to my mentor, he understands my concerns, and that's what differentiates a teacher and a mentor in the industry. I will finish the left out work after my exams and looking forward to publishing a paper along with my mentor.

Debashish Roy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment