Is there a specification somewhere that distinguishes fatal from recoverable errors?
A. We are trying to adopt try/except exception processing for errors. The details for this are still being worked out. Fatal errors should be avoided if possible in the libraries, but when they occur, we should have a central routine to log the error and exit (EMAN1 did). This is in flux right now I’d say. Q. Are operations on arrays / matrices defined anywhere in the code? Similarly, why does the EMData class define an image as a low-level C chunk of memory, with the user constantly performing on-the-fly index calculations? A. Using C++ abstractions for the low level image storage (like an array of arrays) generally imposes a substantial speed penalty. There IS a higher level abstraction for accessing the image data get_value_at, set_value_at, etc. These are generally inlined functions, so the ones that don’t check limits are pretty much the same speed as doing the index calculations yourself. Currently there aren’t any routines for treating EMData objects as vectors/matrices/tensors,