2013-03-26 4 views
0

J'essaye d'interpoler les données 2D en utilisant la fonction griddata de mlab avec le paquet natgrid installé.Comment faire pour attraper les erreurs griddata de natgrid

Cependant, mes données est à l'origine de deux types d'erreurs:

Natgrid - two input triples have the same x/y coordinates 
      but different data values: 

       First triple: 0.000000 45.000000 20.743004 
       Second triple: 0.000000 45.000000 20.572077 

et quand je supprimer les points en double (comme l'a suggéré here) je reçois:

natgrid - error number 1 from ReadData: 
    Insufficient data in gridded region to triangulate 

Le principal problème avec c'est qu'il n'y a aucun moyen d'attraper les erreurs. Et quand ils se produisent, le processus python se termine brusquement.

Comment gérer ces erreurs spécifiques griddata et comment puis-je les attraper et continuer mon script?

+0

sont ceux l'ensemble des messages d'erreur que vous obtenez? –

+0

oui, c'est tout ce que je reçois en sortie de l'erreur natgrid. Mon IDE signale ensuite que 'Processus terminé avec le code de sortie -1073741819' pour la deuxième erreur et' Processus terminé avec le code de sortie 1' pour le premier. – Pablo

+0

Pouvez-vous exécuter votre code avec le débogueur et mettre à jour votre question avec le backtrace. Faites simplement ceci: 'python -m pdb my_script.py'. Lorsque l'erreur est de retour, vous devriez être laissé dans une console python. Si c'est le cas il suffit de taper 'tb' et d'appuyer sur' enter' et vous aurez la liste des appels de fonction avant le crash –

Répondre

0

Si griddata appels sys.exit() après l'impression du message d'erreur, vous pouvez l'attraper:

try: 
    griddata(....) 
except: 
    do what needs to be done 

Si le buildin exit() est appelé à la place, je pense qu'il n'y a rien à faire pour rattraper l'erreur et continuer à travailler.

Si j'appelle à sys.exit() ipython, je reçois:

Une exception a eu lieu, utilisez% tb pour voir la pleine retraçage. Pour quitter

SystemExit

: utilisation 'exit', 'Quit', ou Ctrl-D

et montre que le backtrace sys.exit() est rien d'autre qu'un KeyboardInterrupt.

Au lieu de cela, je pense que le bâtiment exit() juste tuer l'interpréteur python (au moins sur le python2.7 livré avec ubuntu)

+0

J'ai trouvé la [interface Python vers la bibliothèque NCAR natgrid] (https://github.com/ matplotlib/natgrid) (je ne sais pas si c'est officiel). Mais je ne suis pas compétent en C/C++ et donc j'ai du mal à comprendre où et comment il gère les erreurs. Je vais contacter le développeur désigné pour voir s'il peut aider. – Pablo

+0

Il ressemble à celui officiel. Si NCAR est en C/C++, je doute qu'il soit facile de gérer les erreurs. Si la bibliothèque et l'interface sont bien conçues, vous pourrez peut-être vous en tenir à un code d'erreur renvoyé par Natgrid ou attraper une exception (si C++). –

Questions connexes