nrnb / GoogleSummerOfCode

Main documentation site for NRNB GSoC project ideas and resources
114 stars 38 forks source link

Implement Array Support in Antimony #108

Closed hsauro closed 4 years ago

hsauro commented 6 years ago

Background

Antimony is a script based language for supporting SBML (http://antimony.sourceforge.net/). It allows models to be easily expressed in a human readable language which is then covnerted into SBML, an XML based format. Likewise, SBML models can also be converted to Antimony. These features are used for example in the modeling platform Tellurium (tellurium.analogmachine.org). SBML also supports a variety of packages that extend the capabilities of SBML. One of these packages is the array package which would allow a modeler to represent any entity in a model as an array. For example, arrays of reactions or species or even entire models.

Goal

The goal of this project is to implement array support into Antimony. This would require ammending the Antimony grammar and updating the Antimony library to generate SBML with array support.

Difficulty Level 2

This project offers the opportunity to learn new skills in the area of modeling and use of SBML.

Skills

C/C++ (essential) Python (nice to have) SBML (some) Yacc/Bison (nice to have)

Public Repository

http://antimony.sourceforge.net/

Potential Mentors

Herbert M Sauro Leandro Watanabe

Contact

Herbert M Sauro

leandrohw commented 6 years ago

Hi Herbert, I am pretty familiar with the arrays package so I would be happy to co-mentor on this project. My only concern is that just extending Antimony to support arrays might take less than one summer.

Does Antimony already support L3V2? This could be another milestone.

luciansmith commented 6 years ago

There's not a lot to L3v2 that needs special support, other than the math, which it does indeed already support.

leandrohw commented 6 years ago

I’m not familiar with the source code, but I assumed it would need a little bit more than that. It looks like you can convert between the Antimony language and SBML so I don’t know if missing objects are checked when reading L3V2 files.

hsauro commented 6 years ago

Thanks, I'll add you as a mentor.

Herbert

On Sat, Dec 16, 2017 at 9:37 PM, Leandro Watanabe notifications@github.com wrote:

Hi Herbert, I am pretty familiar with the arrays package so I would be happy to co-mentor on this project. My only concern is that just extending Antimony to support arrays might take less than one summer.

Does Antimony already support L3V2? This could be another milestone.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/nrnb/GoogleSummerOfCode/issues/108#issuecomment-352233759, or mute the thread https://github.com/notifications/unsubscribe-auth/ABAZDkzvtmEgNSp2OgV7AFyD25ZKsB6tks5tBKiVgaJpZM4RC02C .

mnafees commented 6 years ago

Hello, I am a University of Waterloo, Canada student doing my Bachelor's in Computer Science. I am interested in working on this project for GSoC 2018 and I have gone through the code for Antimony. Is there any small task I can do to get even more familiar with the codebase? Are there more tips about the project proposal?

Best, Nafees.

hsauro commented 6 years ago

Welcome to GSoC. I think there are two things one could do. The first is to get familiar with the array package documentation if you haven't done so already. Once you are familiar with the array specification you can start considering what array syntax you'd like to employ with the antimony language. For the later I would write up rough notes on google docs.

If you want to do some coding, we have a significant memory leak with the current antimony code which prevents certain kinds of simulations. That might be a good way to get more familiar with the code base. I've cced this to Kiri Choi who should be able to reproduce the memeory leak if you interested in taking this approach.

Herbert Sauro

On Tue, Feb 13, 2018 at 8:32 AM Mohammed Nafees notifications@github.com wrote:

Hello, I am a University of Waterloo, Canada student doing my Bachelor's in Computer Science. I am interested in working on this project for GSoC 2018 and I have gone through the code for Antimony. Is there any small task I can do to get even more familiar with the codebase? Are there more tips about the project proposal?

Best, Nafees.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/nrnb/GoogleSummerOfCode/issues/108#issuecomment-365322297, or mute the thread https://github.com/notifications/unsubscribe-auth/ABAZDiKKIsCcCdjLHFD-ifjuozyK6N0Aks5tUbj5gaJpZM4RC02C .

luciansmith commented 6 years ago

Another coding option would be to experiment with how you would implement support for SBO terms in Antimony. Currently, SBO term support is implemented in an additional layer in Tellurium, but this needs to be moved into the actual Antimony parser. This would familiarize you with the 'bison' interface (the ypp file in the Antimony source), and would be similar to the core of the project, where you're adding new grammar lines to Antimony to parse new syntax.

The syntax for the SBO terms is:

[variable].sboTerm = SBO:[integer]

like:

A.sboTerm = SBO:0000487

You should also be aware that a basic syntax has already been developed for functions with arrays in them and is implemented in the libsbml 'experimental' release; what would be needed would be a new syntax for variables in Antimony, hopefully that would follow the basics of the existing function syntax.

Good luck, and thanks for your interest in GSOC and Antimony!

kirichoi commented 6 years ago

FYI, here is the issue I filed that comes with a script to reproduce the memory leak present in antimony.