ModelSEED / Model-SEED-core

The Model SEED is a tool for building, curating, and analyzing gonome-scale metabolic models. Visit the Model SEED homepage for installation instructions and full feature documentation.
http://bionet.mcs.anl.gov/index.php/Model_SEED_Homepage
Other
19 stars 10 forks source link

Error Reporting in MFAToolkit #150

Open samseaver opened 12 years ago

samseaver commented 12 years ago

I'm slowly discovering the various ways in which to make the gapfilling code throw a seg fault. So far, these can be captured and an appropriate error message can be returned, so I'm opening this thread as a means of recording what needs to be captured.

In general, the reporting system is a mess, there's several different files, and the same output goes to more than one file, yet, different output goes into different files, so finding the relevant output is hard.

1) The code crashes if an attempt is made to include the same compound in the same compartment on both sides of the equation. The model_import code flags these, but they need to be forcibly removed from the model before running FBA because somehow the FBA reaction-balancing code doesn't pick up on these. Since the reaction-balancing code is being written in PERL, we need to start disabling the use of the FBA balancing code, and picking up on the status messages in the database.

2) The code crashes if none of the environment variables are set correctly, it should be simple to test for the existence of these, especially the CPLEX licence variable, and to report their absence rather than let the code seg-fault.

3) The code seg faults if a biomass reaction is not present in the model. The weirdest thing here, that I've just managed to uncover after two days of testing, is that the gap-filling code actually believed that the biomass reaction was there, it had the right id, and was actively looking for it in the database, but somehow, it wasn't printed with the model itself. We need code that captures the attempt to find a reaction, and to finish cleanly.