ckchmod / rbn-matlab Goto Github PK
View Code? Open in Web Editor NEWRandom Boolean Networks
Random Boolean Networks
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:
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).
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?
I may add another parameter in BoolCellGrid.m to specify what kind of intercellular function we want to use. Right now, everything is just an 'OR function,' but I think we can expand on that. I've recently learned that an intercellular function can be an "AND" function or even a "linear threshold" function.
This should be a quick change.
Please remember to always pull (fetch + merge) the newest code.
Last update (12/6/2016)
Future update (12/?/2016)
User defined initial states, etc should have some quick checks on them
Function to take a grid that's already been initialized and randomize the truth table for a certain number of cells.
Be careful: boolCellGrid is a handle, which DOESN'T COPY BY DEFAULT, which means that if you write something like:
a=boolCellGrid(...........);
b = a;
b = change_stuff(b);
Then you have changed the original grid 'a' as well!
We really should save the seeds of everything we produce for reproducibility.
Should take two different "boolCellGrid" classes and compare their final states in the "allStates" property, returning a Hamming distance.
Maybe this could just be a separate function.
Optional: could compare more than just the final states (e.g. if the grid is oscillating) and find some sort of "average distance"
One of the students in my group had to measure how limit cycles changed as network parameters were changed, and he used a metric called the "Procrustes distance." It seems like there's a built-in MATLAB tool for it now:
I've tried various things, from nargin==x to exist('x','var'), and they're workable but fragile/long (respectively).
What I do in my own code is use the v2struct() command from the exchange, always pass my functions a struct with the fields that will become variables, and any that I didn't set stay with their default values. I can of course show an example, but let me know if that sounds interesting.
Add the "orthogonal" neighbors case to the "getNeighbors" function
I want to be able to save movies. So I guess I'll work on adding a movie feature...Because I'm selfish..
We talked about categorizing the different network responses to the mutants through thresholding or some other method... should we implement that?
Ideas:
'linear' category if a linear fit to the Hamming distance is good, i.e. low error
'asymptotic' category if a sqrt function is a good fit? Or something
'jump' category if the derivative of the function has a spike (i.e. max>>mean and low variance overall)
As I'm trying to add more and more support functions to the existing package, I'm beginning to wonder if we should just move all the support functions to a separate .m file?
For example, support functions like Hamming Distance, Plotting, Adding Mutants, Perturbations could all be on a separate file that includes only the support functions. boolCellGrid.m can just have all the main components (and the private access functions) for creating boolean networks on a grid.
Thoughts?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.