August 13, 2018

Google Summer of Code Experience: Arnab Banerjee

The "Road to GSoC" is paved with learning and fun!

As Organizations are finishing up Google Summer of Code for 2018, I would like to spend a few posts highlighting this Summer's projects at the OpenWorm Foundation and Orthogonal Research and Education Laboratory. In this post, I am reposting Arnab Banerjee's blog post on his experience with open-source development. He worked on a project called "Physics-based XML Model building for mosaic embryogenesis of Caenorhabditis elegans" (project repository, proposal presentation).

          I have recently completed a Google Summer of Code (GSoC) 2018 student project as part of the DevoWorm group and OpenWorm Foundation. Being a newcomer to the world of open source, it might seem a little presumptuous of me to write an article about the stages of becoming an experienced open source developer. But this article has resulted from personal experiences in the Open Source community, and so should be useful to open-source project newcomers and future Summer of Code students alike.

           I would like to begin by sharing a metaphor. Imagine a group of mountain climbers trying to get to the summit of a mountain.

           There are some who are doing it for the first time - the BEGINNERS. They find it difficult to get used to this activity and it is all new to them - from maintaining rations of water and oxygen cylinders to getting used to the physical exhaustion. Then there is the psychological factor - the will power and ability to keep going forward despite setbacks. The psychological and physical factors combine to make this period fraught with unexpected challenges. 

          Then there’s another group who have already done this a few times before. They are definitely more confident in their abilities, but not so good that they can lead an expedition to the top. They know how to maintain the rations like water and oxygen up to the correct levels because they have experienced it a few times before already. Willpower is also a little stronger than the beginners. These are the INTERMEDIATE climbers.

           Finally, the group leading the expedition - the EXPERIENCED - have done mountain climbing dozens of times. They lead the entire movement - from allocating resources to other climbers and deciding course of action in case of disaster. The remaining group looks upto them for directions when they are stuck. The rest of the group draws inspiration from them too, because they are the leaders of the movement. The EXPERIENCED have already been successful at the act of mountain climbing and learned from their failures - but they still keep doing it and training the others to reach higher and better positions.

          I’m sure by now you might have guessed that these grades of expertise parallel the world of open source development. As with mountain-climbing, I believe there are 3 distinct classes of developers in open source:

1. Beginner - A beginner struggles with basic concepts like version control systems. Also diving deep into the code base of an established open source organization seems difficult at first. As with mountain-climbing, the learning curve is steep. But once the initial effort is made, steady progress is seen.

2. Intermediate - Intermediates are ore comfortable with basic issues like using Git or version control system more generally. Intermediates can become familiar with the code base in a shorter amount of time, either due to organizational experience or experience with interpreting code more generally. In working at the intermediate level, time management becomes an important skill to build. Along with contributions to code base in a limited amount of time, other work like collaborating with teams and community bonding become important skills to master.

3. Experienced - The experienced are leaders of their organizations, and decide the overall strategy for these organizations. Experienced open-source contributors allocate new comers to issues to which beginners and intermediates will fit well. Other roles include conflict resolution and making sure that the organization functions with efficiency. Technical expertise (strong coding abilities) and a firm grip on domain-specific knowledge makes them natural leaders. 

          I believe after my GSoC journey, I have almost reached the end of the first 'BEGINNERS' phase. It was both an educational and rewarding experience. The initial weeks were tough to get used to because coding was one of many things I was simultaneously juggling - blog progress, mentor calls, community bonding, documentation, and domain-specific knowledge (learning about embryogenesis and neuroscience). Here is a visual aid in cartoon form (slideshow).

           Prior to my experience with GSoC, I couldn’t have pictured completing such a project with a neuroscience domain organization, but the massive support that I received from the larger OpenWorm Foundation community, Dr. Stephen Larson, and especially my mentor Dr. Bradly Alicea. Bradly introduced me to the DevoWorm Group, and was instrumental in whatever I have been able to achieve this summer. I learned from them that dozens of contributors sitting in 10 different time zones can collaborate to work on a project that has the potential to impact an entire community of researchers and developers.

CONCLUSION - Aiming for a moonshot project

          I hope to keep dedicating myself at least part-time to the cause of OpenWorm. The OpenWorm mantra is “building the world’s first worm-matrix, one line of code at a time”. The project that I worked on has given me a good foothold and introduction to the world of open source - especially the OpenWorm Foundation and DevoWorm Group. Now, there’s no turning back. I have decided that I will contribute to the OpenWorm Foundation by integrating my GSoC project with the Geppetto modeling environment.

          Technically, its a moonshot project and will not be easy to achieve. But HEY! I just participated in GOOGLE SUMMER OF CODE. As they say at Google: "aim for moonshots; its easier to make something 10X better than 10% better". That’s what I’ll aim for - a moonshot. Let’s see where it takes us - me and the OpenWorm Foundation. At worst, I end up contributing some useful code and learning something interesting. At best - well, we integrate DevoWorm with Geppetto!

Until we meet again!
Arnab Banerjee
Student Developer
Google Summer of Code 2018 - INCF (OpenWorm Foundation and DevoWorm Group

August 1, 2018

OpenWorm Blog: August is ChannelWorm Month!

Content is being cross-posted from OpenWorm Foundation blog

August is ChannelWorm Month at OpenWorm!

As we make steady progress on our goal of building the world’s first detailed simulation of C. elegans, we’ve been brainstorming ways to systematically draw attention to each of the components of OpenWorm's platform.

Our scientific and outreach committees have decided that each month will be dedicated to a specific repository that will be designated “Project of the Month.”

This coming month (August 2018) will be dedicated to ChannelWorm, a repository aimed at constructing quantitative models of ion channel behavior.

Visit our Github repo and take a look for yourself:
See also the Heroku App for extensive curated data on ion channels:

WHAT ARE ION CHANNELS? Ion channels are pore-forming proteins which facilitate the movement of charged particles (ions) between the extracellular space and the cytoplasm.  All cells contain ion channels and play a central role in normal cellular function.  However, their role in the nervous system is much more significant.  In particular, ion channels in the nervous system mediate the generation of action potentials, the fundamental mechanism by which a network of neurons processes information. 

HOW THIS CONTRIBUTES TO THE OPENWORM VISION: Ion channels are the most granular level of detail in OpenWorm.  In other words, we abstract away the many complexities of intra-cellular function and treat the organism as an information processing system which uses electrical signals to mediate body movement.  Incorporating additional levels of biological detail is certainly a possibility but is not currently on our scientific roadmap.
BRIEF OVERVIEW OF CHANNELWORM: The aim of ChannelWorm is to build quantitative models of ion channel function.  To that end, we use the following workflow:
  • Create a database of information about C. elegans ion channels specifying channel type and location in the nervous system (i.e. name of neuron) where the channel is expressed. 
  • Identify relevant scientific papers which contain experimental recordings of ion channel behavior.
  • Extract plots from the corresponding papers and add them to the database of ion channels. (This data is currently available at
  • Digitize plots to extract data points.
  • Use parameter fitting techniques to determine numerical values of parameters for quantitative models.
  • Export ion channel models in the NeuroML (NML) format to be stored in PyOpenWorm.
SHARE IN THE COMMUNITY! We very much encourage both new and experienced volunteers to turn their attention to ChannelWorm and find areas that might be of interest to them.  The best way to get involved is to first fill out our volunteer application form.

In the meantime, we recommend taking a look at the Github repository for ChannelWorm for open issues the project is currently tackling.  Some of the issues are specifically marked as being appropriate for beginners.  We will add to this list over the next few weeks.

WHAT HAPPENS AFTER THE APPLICATION: After we look at your application, you’ll receive an invitation to join our workspace on Slack.  From there, you can contact other volunteers who can help find a project to match your skills and interests.

WHAT IF I’M NOT A PROGRAMMER? Even if you are not a computer programmer, you can still contribute! Here are some of the ways:
  • Author a blog post: we’d love to have informative scientific blog posts on anything relevant to ion channel function and modeling. Submit a draft and we will host it on the OpenWorm blog.
  • Literature search and data re-evaluation: we’d also like to support basic science in this area. If you have experience with conducting research, please get in touch!
  • Create educational content: we can support educational initiatives such as the creation of digital badges and video tutorials. Pitch an idea and become part of the conversation!
  • Something original: if you have an idea for something that no one has thought of, we’d love to hear your proposal!  Artwork, animations, popular scientific articles, etc. are all welcome.  
At the end of August, we’ll be organizing a distributed hackathon for the community to get together and work on tackling open items on our to-do list. We’ll announce more details towards the second week of August.

OW Science Committee is held at 3:00pm UTC, link provided in Slack #science channel. Hackathon Time/Date: TBA. Digital badges are located at

We hope you can join us!
Please fill out our volunteer application form and contact us on Slack for more information!

ChannelWorm is currently building upon the work featured in this publication:

Gurkiewicz, M. and Korngreen, A. (2007). A Numerical Approach to Ion Channel Modelling Using Whole-Cell Voltage-Clamp Recordings and a Genetic Algorithm. PLoS Computation Biology, 3(8), e169.

May 21, 2018

Rise of the Alt-Research Program

It is time for a new paradigm! In the past 5 years or so, a new type of research institute has arisen [1]. One that is flexible and open, without the constraints typical of a University or corporate labs. In a time of institutional change and funding uncertainty, such institutes provide a means for many non-conventional types of research to flourish. We can think of such facilities an "Alt-research Program" (after the "alt-academic" movement) [2], although stressing the open science and collaborative aspects are also important. So let's discuss some recent developments for one such organization, Orthogonal Research and Education Laboratory.

We have three recent developments: a new paper collaboration, a preprint mention, and a set of Google Summer of Code presentations. First up is a paper that was recently published with three co-authors. Orthogonal Research is a nexus for open science-enabled collaborations with University-based academics [3]. The paper “Network Dynamics of Attention During a Naturalistic Behavioral Paradigm” is now live at Frontiers in Human Neuroscience [4]. Learn about the what happens in attentional networks of the human brain during naturalistic behavior – in this case, high-resolution video game play with neural activity captured via “free-viewing” neuroimaging.

Here is how you build institutional credibility (or so I've heard). Notice the second affiliation.

From Figure 3 in the paper (drawings courtesy of Dr. Richard Huskey).

Screen shot of the first-person video game stimulus "Tactical Ops: assault on terror". Screenshot courtesy of Top Full Games and Software.

Orthogonal Lab was also recently mentioned in a preprint on scientific ecosystems [5] from members of the Ronin Institute. In the paper, Orthogonal Lab was described as a lab focusing on more specific research questions than a larger institute focused on enabling basic science initiatives (such as Neurolinx). This new scientific ecosystem paradigm proposed in the paper is focused on how to enable collaboration and open science outside of the formal University structure.

Thirdly, we have community period [6] presentations by three students in this year’s Google Summer of Code program (sponsored by INCF). There will be a presentation now, and a final presentation at the completion of the Summer. The idea is to keep students thinking about the project's progress, to develop their public speaking/presentation skills, and to build up the foundations for a paper or future research. Cheng-Hsun (Jim) Hsueh and Sam Felder are working on Contextual Geometric Structures project (Representational Brains and Phenotypes Group), while Arnab Banerjee is working with the OpenWorm Foundation (DevoWorm Group).

One way to enable Alt-research Programs is to embrace low carbon and location-free modes of doing and disseminating research. One such proposal (by Dr. Angel Goni-Moreno) has been made to provide low-carbon and researcher-accessible conferencing options to the annual ALife conference. In particular, distributed sessions would enable participation and collaboration across continents and research groups that would otherwise not interact.

The new research ecosystem paradigm path to field-specific and interdisciplinary community-building?

[1] See a previous Synthetic Daisies post on hosting theory hackathons through such as organization.

[2] While I find the prefix "alt-" to be a shallow marketing term (sometimes nefariously so), it does fit into existing descriptions of academic activity outside of or in parallel with Universities.

[3] The two main collaborators were the Media Neuroscience Laboratory at UCSB and the Cognitive Communication Science Laboratory at OSU.

[4] Here are the essential materials: Paper, Supplemental Materials, Open Dataset, Video Game Stimulus.

[5] Lancaster​​, A.K., Thessen​, A.E., Virapongse​, A. (2018). A new paradigm for science: nurturing the ecosystem. doi: 10.7287/peerj.preprints.26885v2.

[6] Typically, the community period is an opportunity for students to get acquainted with the community resources (open datasets, open codebase, community members) of their chosen open source/science organization. For more information on the Google Summer of Code community period, here are a few blog posts (1, 2, 3, 4, 5).

April 29, 2018

Ready to Start to Google Summer of Code 2018!

Currently at the red roadhouse on the left-hand side of the road.

On your mark, get set, go! We are quickly traveling down the Google Summer of Code (GSoC) road! First, a welcome to the three students I will be mentoring: Arnab Banerjee (Pune University), Sam Felder (University of Illinois Urbana-Champaign), and Cheng-Hsun Hsueh (National Yang-Ming University).

Arnab will be working within the OpenWorm Foundation on "Physics-based XML Model-building for the Mosaic Embryo", while Sam and Cheng-Hsun will be working on "Contextual Geometric Structures of Cultural Behavior ".

This tweet says it all. Check in on the DevoWorm and Representational Brains and Phenotypes group activities throughout the Summer for updates.

We are currently in the Community Period, which lasts until the coding period begins (May 14). Towards the end of Community Period, each student will present a 15-20 minute presentation on their accepted proposal, including additional insights on what will make their project successful. Stay tuned! 

April 13, 2018

Video Game Complexity: a short overview

What inspired this post was both an interesting question from Twitter user @ID_AA_Carmack, CTO at Oculus VR and a long-suffering manuscript I have been trying to get into publication with some collaborators [1]. With reference to the former:

In the accompanying thread, someone mentioned that the classic game Tempest used a paddle controller, and therefore was an example of analogue control (and outside the scope of John's taxonomy). But in general, joystick and button-press control provide a measure of complexity for a wide variety of games.

Let's begin by highlighting a 2-bit game. Two examples of a 2-bit game (in terms of control) are Pong and Breakout. In both games, the player uses a single controller to move a virtual paddle back and forth across the screen [2].

A screenshot of Pong (left) and Breakout (right) and the degrees of freedom per player. Each degree of freedom (movement along the right-left axis) represents 2 bits of information.

Now let's discuss the mention of Joust as an example of  3-bit control and Pac-Man as an example of 4-bit control. For uninitiated readers, here are screen shots from the game (click to enlarge)

And here is a picture of the Joust arcade console and its 3 bit control mechanism.

The Joust joystick provides 2 bits of control (left on/off and right on/off), and the button is 1-bit of control (press or no press). This is sufficient complexity to control the action, but not enough complexity to account for all observed action in the game.

Pac-Man utilizes a maze rather than linear action, but has only one additional degree of control complexity. Here are some screenshots from the game (click to enlarge)

In terms of control complexity, Pac-Man is a 4-bit game (2 degrees of freedom), while the Atari 2600 controller can provide up to 5 bits of information (2 degrees of freedom and a button). These are arbitrary assessments of information content, and do not correspond with every possible degree of freedom in the game environment.


Examples of 4- and 5-bit control via joystick for a version of Pac-Man (left) and the Atari 2600 (right). 

There are two additional sources of complexity we should be concerned with: the combinatorial complexity of objects within the game, and perceptual complexity of human information processing during gameplay. The former can be characterized by computational complexity classes, while the latter can be characterized in conjunction with control complexity in the form of information bandwidth (measured in bits or bits per second).

A taxonomy of computational classes for Pac-Man and other games is described by [3-5]. While Pac-Man is considered an NP-hard game, not all video games are. Furthermore, games that are in the same computational class do not have the same types of objectives or in-game properties. The games Tetris [6] and Minesweeper [7] have been found to be NP-complete. This is likely based on the combinatorial properties of each game.

According to Aloupis [8,9], Super Mario Brothers can be classified as NP-hard. Other Nintendo games, such as Donkey Kong Country, are PSPACE complete. The Nintendo examples are interesting from an approximation perspective, as several Nintendo games have been reclassified by this research group between 2012 and 2016 [8,10]. 

The criterion are based on things like how the avatar moves within the game's activities. A game like Pac-Man involves so-called "location traversal" [4], which in computational terms is similar to the travelling salesman problem (NP-hard) [3].  By contrast, a game like Breakout involves a balancing maneuver [see 2] that is solvable in LSPACE.

Video game screenshots and computational complexity for several example games. Clockwise from top: Super Mario Brothers (NP), Donkey Kong Country (PSPACE), Breakout (LSPACE), Minesweeper (NP), Tetris (NP), Pac-Man (NP).  

Human information processing (or performance) can be characterized in the form of informational complexity. One classic way to assess complexity in performance is the use of psychometric laws [11]. Invariants relevant to video game performance are Fitts Law (hand-eye coordination), the Weber-Fechner Law (just noticable differences in stimulus intensity), and Stevens Law (the perception of physical stimuli relative to intensity). In the case of Fitts Law, the index of difficulty is often expressed as a function of bandwidth (bits/second). This provides a real-time expression of complexity that can be compared across games. Similarly, the presence of signal relative to noise can be expressed in terms of information content (Shannon-Hartley theorem). The stimulus information available to the game player may or may not be congruent with control complexity and in-game combinatorial complexity [12]. Accounting for all three dimensions of this complexity is an avenue for further study.

[1] Weber, R., Alicea, B., Huskey, R., and Mathiak, K. (2018). Network Dynamics of Attention During a Naturalistic Behavioral Paradigm. Frontiers in Human Neuroscience, doi:10.3389/fnhum. 2018.00182.

[2] Many early video games were designed around simple programming benchmarks. Games such as Pong and Breakout take inspiration from the pole-balancing problem, while the game Qix takes inspiration from k-D partitioning. In this case, the human serves to solve the computational problem, however inefficiently.

[3] Pac-Man Proved NP-Hard By Computational Complexity Theory. Emerging technology from the arXiv blog, January 26 (2012). 

[4] Viglietta, G. (2013). Gaming Is A Hard Job, But Someone Has To Do It! arXiv, 1201.4995.

[5] Demaine, E.D., Lockhart, J., and Lynch, J. (2016). The Computational Complexity of Portal and Other 3D Video Games. arXiv, 1611.10319.

[6] Demaine, E.D., Hohenberger, S., and Liben-Nowell, D. (2003). Tetris is hard, even to approximate. Proceedings of the International Computing and Combinatorics Conference, 351–363.

[7] Kaye, R. (2000). Minesweeper is NP-complete. The Mathematical Intelligencer, 22(2), 9–15.

[8] Demaine, E.D., Viglietta, G., and Williams, A. (2016). Super Mario Brothers is harder/easier than we thought. Proceedings of the International Conference on Fun with Algorithms.

[9] Aloupis, G., Demaine, E.D., Guo, A., and Viglietta, G. (2014). Classic Nintendo games are (NP-) hard. arXiv, 1203.1895.

[10] Aloupis, G., Demaine, E.D., Guo, A., Viglietta, G. (2012). Classic Nintendo Games are (Computationally) Hard. arXiv, 1203.1895.

[11] One challenge in linking psychophysical complexity to video game perception is in capturing the entirely of what is cognitively extracted from the game environment.

For an example of a purely psychophysical aproach to game design, please see: Hussain, Z., Astle, A.T., Webb, B.S., and McGraw, P.V. (2014). The challenges of developing a contrast-based video game for treatment of amblyopia. Frontiers in Psychology, 5, 1210. doi:10.3389/fpsyg.2014.01210

[12] Forisek, M. (2010). Computational complexity of two-dimensional platform games. Proceedings of the International Conference on Fun with Algorithms, 214–227.