URL: <http://gna.org/task/?7801> Summary: Design interface between the user and the functional code is to perform comprehensive checks of input Project: relax Submitted by: tlinnet Submitted on: Thu 22 May 2014 09:05:46 AM UTC Should Start On: Thu 22 May 2014 12:00:00 AM UTC Should be Finished on: Thu 22 May 2014 12:00:00 AM UTC Category: relax's source code Priority: 5 - Normal Status: None Percent Complete: 0% Assigned to: tlinnet Open/Closed: Open Discussion Lock: Any Effort: 0.00 _______________________________________________________ Details: The target_functions.relax_disp and lib.dispersion code make assumptions as to how the data they receive will look like. If this is violated, then it will be random how different code paths fail. This happens if data is missing for a spin. If one is setting metadata for spectral information from two field strengths, but only loading data from one. In the numeric models, we use a special matrix_exponential() function calls numpy.linalg.eig(). The eig() function is where the can occur. This function is not used in the analytic models, so the same failure cannot be observed. The best approach in designing the interface between the user and the functional code is to perform comprehensive checks of what the user has supplied. If things are missing or incorrect, raising a RelaxError is the best way to give feedback to the user. Then we make sure that we package the data up for sending to the target functions only when all required data is supplied. Then the target functions will always receive the data in the correct format. So the idea is to block this code path - the optimisation - until everything is as we expect. Therefore we can add checks as users encounter and report problems. --- This is related to bug: bug #22065 (https://gna.org/bugs/?22065) Systemtest Relax_disp.test_hansen_cpmg_data_missing_auto_analysis has tcp array with multiple nan bug #22017 (https://gna.org/bugs/index.php?22017) LinAlgError, for all numerical CPMG models. _______________________________________________________ Reply to this item at: <http://gna.org/task/?7801> _______________________________________________ Message sent via/by Gna! http://gna.org/