Made SAMC code into a library, and have a semiworking cython/python driver program for it.
Working Cython/SAMC hybrid. Now it is time to improve the interface by having the python gobble up snet.c, then we can build nicer interfaces, parallelism etc...
Eliminated the run function from snet.c and have that same functionality (mostly) in py/snet.pyx. It appears to be working, although some of the results are a bit weird, and there is not the same amount of reporting that there was in snet.c. Next up is to either see where the bugs are, or just go ahead and write metmove in Python (or maybe just separate it out from cost). Then I'd like to clean up things drastically.
Network generation working, with data generation, now trying to generalize to non-binary variables
Working network generation, data sampling, and template sampling. Next steps: to easily plug those into SAMC, and to have objective functions that we can measure. Also consider having multiple ground truths
Tried to get python metmove function working, but I need to rethink the whole architecture as it's still really messy. Maybe rewriting stuff.
Almost completely rewritten, now with two classes (one a cython extension cdef), and only using C for the cost function. It compiles, but is not quite working yet. Now I need to test it and verify it (which will probably take a while.
Tested against the original SAMC code and everything appears to be working well. Now I'm going to try and do something about the 2-fold speed difference between the C code and the Cython code. (33 seconds vs 78 seconds for 100k iterations).
Reduced time by about half with a few simple optimizations (in find_region and removing the graph copying).
A few attempts at small optimizations, no real difference seen.
Added pytables saving, and almost have resumption (sp?) working from saved sample runs.
Fixed up the sample storage in pytables. Working correctly now (and restoring). Also fixed some bugs with the memory sampling (but have disabled it for now). Next I am investigating why the acceptance rate is around 10% higher for my code than from the original SAMC code.
Fixed a bug in the mapvalue saving, and also intentionally broke the cost.c function because I think there is a bug in there which is causing different cost values for the same network in the original C code and the python-C code. And the difference is only in the fvalue of a single node (and a boring node at that).
Refactored. Split BayesNet and SAMCRun into two files. Split Driver into generator and driver.py. Added utils for visualizing histograms, networks, and comparing with pebl results (SimulatedAnnealing and GreedySearch).
Added templates into posterior cost calculation

Now I need to decide whether I can choose the priorweight well enough,
or it needs to be learned as a hyperparameter ala Werhli.
Added objective functions

In SAMCRun() I added a function to calculate the mean of the objective
function over the sampled models. Unfortunately it seems to have large
variance from run to run due to the small number of heavily weighted
samples. (Use the new plotSamples function in utils to see what I mean).
I tried increasing the concentration of the reference density, but it
didn't affect the numbers any. I can't help but wonder if the weighting
factors are incorrect, as I am completely ignoring the log probability
(energy) of the model in calculating the average.

Need to ask Dr. Liang about that.
Added module checks in wscript

Also moved the reference density back to how it normally is.
Added a better error objective fxn
Added mpi features for the cluster
Merge branch 'master' of kubera.ece.tamu.edu:./samc/samcsynthetic-0.2