Pyradiomics: appeler la fonction sitk avec l'argument int ne fonctionne pas avec Python 3

Créé le 17 févr. 2017  ·  10Commentaires  ·  Source: AIM-Harvard/pyradiomics

@jcfr Lors de l'utilisation de Python 3.5, le rééchantillonnage tel qu'implémenté dans imageoperations.py#L187 ne fonctionne pas.

sitk.ResampleImageFilter accepte les arguments uint32_t. En Python 2.7, cela fonctionne bien en passant np.int . Cependant, en Python 3, cela ne fonctionne plus.

Exemple:

rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1, 2, 3], dtype='int'))

TypeError: in method 'ResampleImageFilter_SetSize', argument 2 of type 'std::vector< uint32_t,std::allocator< uint32_t > > const &'

Quel type numpy devrait entraîner uint32_t pour Python 2 et 3 ? Avec np.uint32 j'obtiens la même erreur.

La conversion du tableau en python int avec arr = [int(x) for x in arr] résout le problème mais est moche...

Commentaire le plus utile

np.array([1, 2, 3], dtype='int').tolist() fait l'affaire. Je vais créer un PR sous peu.

Tous les 10 commentaires

@haarburger , merci pour l'avertissement ! Cette conversion nous posait des problèmes auparavant (et l'a corrigée en la convertissant en 'int', mais ne fonctionne apparemment pas pour python 3). Nous allons nous pencher dessus pour le rendre compatible avec python 3. Si vous trouvez une solution entre-temps, nous serions ravis de votre contribution.

np.array([1, 2, 3], dtype='int').tolist() fait l'affaire. Je vais créer un PR sous peu.

rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1, 2, 3], dtype='int'))
TypeError : dans la méthode 'ResampleImageFilter_SetSize', argument 2 de type 'std::vector< uint32_t,std::allocator< uint32_t> > const &'

np.array([1, 2, 3], dtype='int').tolist() fait l'affaire. Je vais créer un PR sous peu.

@blowekamp Serait-il judicieux d'améliorer la couche d'emballage pour comprendre directement le tableau numpy en tant que paramètre ?

J'essaierais d'utiliser un type entier non signé pour le tableau numpy.
np.array([1, 2, 3], dtype='uint32')

La couche d'emballage Swig comprend les tableaux numpy. Il ne convertit pas implicitement les tableaux d'entiers signés numpy en types de tableaux non signés.

Le 17 février 2017 à 17h40, Jean-Christophe Fillion-Robin [email protected] a écrit :

rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1, 2, 3], dtype='int'))
TypeError : dans la méthode 'ResampleImageFilter_SetSize', argument 2 de type 'std::vector< uint32_t,std::allocator< uint32_t> > const &'

np.array([1, 2, 3], dtype='int').tolist() fait l'affaire. Je vais créer un PR sous peu.

@blowekamp Serait-il judicieux d'améliorer la couche d'emballage pour comprendre directement le tableau numpy en tant que paramètre ?


Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, consultez-le sur GitHub ou désactivez le fil de discussion.

@blowekamp En fait, np.array([1, 2, 3], dtype='uint32') était la première chose que j'ai essayée, mais ça ne marche pas.

@haarburger , as-tu aussi essayé 'uint' ?

Oui, ne fonctionne pas non plus.

Il faudra que j'examine la suite. Pouvez-vous s'il vous plaît créer un problème SimpleITK et inclure la version SimpleITK, le système d'exploitation, Python Distribute, etc. où le problème s'est produit ?

Avez-vous vérifié si SimpleITK 1.0rc1 a le même problème ?

@blowekamp le problème se produit également avec 1.0rc1.

Résolu par #205

Cette page vous a été utile?
0 / 5 - 0 notes