Closed ckchmod closed 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.
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...
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.
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.
Ah crap, you're right. Didn't read too carefully.
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.
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.
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?