ckchmod / rbn-matlab

Random Boolean Networks
0 stars 1 forks source link

Heterogeneous cell grid #8

Closed ckchmod closed 7 years ago

ckchmod commented 7 years ago

Katherine just brought up a really good point. With the current boolCellGrid classes, we can't have more than one boolean network (cell type) yet..... So if we want to introduce a mutant cell (chaotic network), we would have to modify the code, so it can store and call at least two different boolean networks in the classes. The wiring of the cells with say chaotic and non-chaotic networks would have to be carefully done.

I have a feeling this may be a little bit of a messy work given our short time limit. So, here are the two ways we can go about doing this:

1) We can take the easy route for the project: we don't have to mix different types of boolean networks. We can just do a sensitive analysis of some sort, where given homogeneous grid of boolean networks, we just start changing initial states, (or connectivity) and observe the change in behaviors (and plot them). We would still be dealing with only one specific type of boolean network for all the cells (just altering their properties).

2) We can take the hard route and fix the code, so you can introduce different cell types on the grid. I can see this being a slightly messy process in our short time we have....., but doable.

What say you?

darthbeeblebrox commented 7 years ago

Actually the things that are always the same are the intercellular communications, and the intracellular communication function is a part of each individual "boolCell" instance. We should be able to generate a grid (it'll store all the initial truth tables, but won't use them), then change X of the cell's truth tables, which are what are used in the "update_genes" function.

ckchmod commented 7 years ago

But we're calling the same objects, obj.varF and obj.Ttable, for each cell. I'm referring to boolCell.m. That's where the updating happens. Remember, each cell is updated by varF and Ttable at each time step. So, we would have to distinguish those from mutant cells.

Having said all this, now I don't think it would be that hard of a fix in the code..... Maybe I'll work on it...

darthbeeblebrox commented 7 years ago

But the boolCellGrid object is made of NxM different objects, all with their own truth tables and states. So on line 173 of boolCellGrid, thisCell = obj.allCells{jCell}; gets the individual cell we're working with, and then the next line goes into that cell, calls it's own specific "update_genes" (which no longer even knows about the grid variables). Inside that cell, the function uses its own individual "varF" and "Ttable" variables.

darthbeeblebrox commented 7 years ago

A 4x4 grid is composed of 16 different cells, that happen to be initialized the same way, but they can be changed at any time.

ckchmod commented 7 years ago

Ah crap, you're right. Didn't read too carefully.

ckchmod commented 7 years ago

I guess the only caveat we have to think about is when you are "injecting" new Ttable, varF, etc... they just need to make sense.

darthbeeblebrox commented 7 years ago

Yeah, there aren't the same checks when you're doing that by hand. However, if we aren't generating them anyway then we have to do those checks.

One solution could be to generate two different complete networks (e.g. one ordered, one chaotic) in a script, and then slowly add copies of the chaotic cells to the ordered network. If we want to use the random generation functions, it would be very easy to do that though we'd want to make the sizes the same to avoid confusion.