nrnb / GoogleSummerOfCode

Main documentation site for NRNB GSoC project ideas and resources
116 stars 39 forks source link

Model scripting for systems biology using Antimony in Java #97

Closed draeger closed 3 years ago

draeger commented 6 years ago

Background

Modeling in systems biology often requires scripting and drafting models and simulation procedures. Many programs have been designed for this purpose. The de facto standard format for encoding and exchanging models in systems biology is SBML. Part of the success of this format is because of its unambiguous and well-defined specifications. However, as an XML-based language, it is difficult for humans to comprehend or write. As an alternative, the shorthand notation Antimony was created as a declarative scripting language for systems biology models. By using this notation, models can be quickly written and its main concepts can be easily understood.

Goal

In this project, a grammar for developing a Java parser for the Antimony language is to be conceived using the JavaCC project. The resulting parser will be incorporated into the JSBML project, so that Antimony files can be interconverted with Java™ data structures and be easily manipulated by numerous software.

Difficulty Level 2

This project requires some understanding of systems biology and modeling aspects as well as computer languages and formal grammars.

Skills

Theoretical computer science and computer languages, systems biology modeling, Java programming

Java™ (essential) JavaCC (nice to have)

Public Repository

https://github.com/sbmlteam/jsbml

Potential Mentors

Andreas Dräger Nicolas Rodriguez

Contact

Andreas Dräger

nguyenquannnn commented 6 years ago

Hi @draeger I'm a second year student at Dawson College in Montreal, Canada. I am really interested in working on this project. I have been familiarizing myself with the JavaCC parser. For the project, I am wondering if there are any external libraries or frameworks would be useful to complete this object. and if there are, can you recommend them to me? Thanks, Quan

draeger commented 6 years ago

@nguyenquannnn, thanks for your interest. JSBML has already one JavaCC parser for reading C-like formula Strings (see JSBML's formula parser package, which has been maintained by @niko-rodrigue). Antimony itself has an implementation in C by @luciansmith (see libAntimony). If you are familiar with Python, you can try Antimony most easily using Tellurium. The nice thing about it is that it bi-directionally converts from and to SBML.

In order to move forward, I would also recommend to you to soon draft a proposal in GoogleDocs that follows the structure of the tempelate https://tinyurl.com/nrnb-gsoc-application-template and to share it with your potential mentors (@niko-rodrigue, @luciansmith, and myself). We will be happy to give you feedback on it.

luciansmith commented 6 years ago

The core of the Antimony parser itself is written in C++ for 'bison':

https://sourceforge.net/p/antimony/code/HEAD/tree/antimony/src/antimony.ypp

You don't need to be super familiar with bison itself to get the basic idea, I think--the format of these types of files tends to be pretty similar from one to the other.

If you have any questions, feel free to ask!

hsauro commented 6 years ago

There must be a Bison equivalent for Java.

Herbert

On Tue, Mar 13, 2018 at 3:06 PM, Lucian Smith notifications@github.com wrote:

The core of the Antimony parser itself is written in C++ for 'bison':

https://sourceforge.net/p/antimony/code/HEAD/tree/ antimony/src/antimony.ypp

You don't need to be super familiar with bison itself to get the basic idea, I think--the format of these types of files tends to be pretty similar from one to the other.

If you have any questions, feel free to ask!

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

cjmyers commented 6 years ago

Yes, Antlr or JavaCC

On Mar 13, 2018, at 5:55 PM, Herbert Sauro notifications@github.com wrote:

There must be a Bison equivalent for Java.

Herbert

On Tue, Mar 13, 2018 at 3:06 PM, Lucian Smith notifications@github.com wrote:

The core of the Antimony parser itself is written in C++ for 'bison':

https://sourceforge.net/p/antimony/code/HEAD/tree/ antimony/src/antimony.ypp

You don't need to be super familiar with bison itself to get the basic idea, I think--the format of these types of files tends to be pretty similar from one to the other.

If you have any questions, feel free to ask!

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

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

hsauro commented 6 years ago

Antlr looks similar to Bison/Yacc

Herbert

On Tue, Mar 13, 2018 at 6:36 PM, cjmyers notifications@github.com wrote:

Yes, Antlr or JavaCC

On Mar 13, 2018, at 5:55 PM, Herbert Sauro notifications@github.com wrote:

There must be a Bison equivalent for Java.

Herbert

On Tue, Mar 13, 2018 at 3:06 PM, Lucian Smith notifications@github.com wrote:

The core of the Antimony parser itself is written in C++ for 'bison':

https://sourceforge.net/p/antimony/code/HEAD/tree/ antimony/src/antimony.ypp

You don't need to be super familiar with bison itself to get the basic idea, I think--the format of these types of files tends to be pretty similar from one to the other.

If you have any questions, feel free to ask!

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

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub < https://github.com/nrnb/GoogleSummerOfCode/issues/97# issuecomment-372858773>, or mute the thread https://github.com/ notifications/unsubscribe-auth/ADWD90q2RSag0um4pL_ ZcszPWUOup4wIks5teFyEgaJpZM4Q_UP3.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/nrnb/GoogleSummerOfCode/issues/97#issuecomment-372875252, or mute the thread https://github.com/notifications/unsubscribe-auth/ABAZDo-KC7vzIDR3dZKVbi5oCS12myQJks5teHQEgaJpZM4Q_UP3 .

ntung commented 4 years ago

Hi @niko-rodrigue and @draeger,

Do you still tend to build Java binding for libAntimony? We might collaborate with this work if you are interested in.

Regards, Tung

draeger commented 4 years ago

@ntung thanks for your interest in this topic! Yes, it is still current. Could you please contact us via e-mail? We will be happy to assist you putting together a competitive proposal.