Pyradiomics: int引数を指定してsitk関数を呼び出すと、Python3では機能しません

作成日 2017年02月17日  ·  10コメント  ·  ソース: AIM-Harvard/pyradiomics

@jcfr Python 3.5を使用している場合、 imageoperations.py#L187に実装されているリサンプリングは機能しません。

sitk.ResampleImageFilterはuint32_t引数を受け入れます。 Python 2.7では、これはnp.intを渡すことで正常に機能します。 ただし、Python 3では、これは機能しなくなりました。

例:

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 &'

Python2と3の両方でuint32_tになるのはどのnumpyタイプですか? np.uint32でも同じエラーが発生します。

配列をarr = [int(x) for x in arr]でPython intに変換すると、問題は解決しますが、醜いです...

最も参考になるコメント

np.array([1, 2, 3], dtype='int').tolist()がそのトリックを行います。 すぐにPRを作成します。

全てのコメント10件

@haarburger 、頭を上げてくれてありがとう! この変換は以前は問題を引き起こしていました(そして「int」にキャストすることで修正しましたが、Python 3では機能しないようです)。 Python3と互換性を持たせるために調査します。 それまでの間、解決策を見つけた場合は、ご協力をお待ちしております。

np.array([1, 2, 3], dtype='int').tolist()がそのトリックを行います。 すぐにPRを作成します。

rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1、2、3]、dtype ='int'))
TypeError:メソッド'ResampleImageFilter_SetSize'で、タイプ'std :: vector <uint32_t、std :: allocator <uint32_t >> const&'の引数2

np.array([1、2、3]、dtype ='int')。tolist()がトリックを実行します。 すぐにPRを作成します。

@blowekamp numpy配列をパラメーターとして直接理解するために、ラッピングレイヤーを改善することは理にかなっていますか?

numpy配列に符号なし整数型を使用してみます。
np.array([1, 2, 3], dtype='uint32')

Swigラッピングレイヤーはnumpy配列を理解します。 numpyの符号付き整数配列を符号なし配列タイプに暗黙的に変換しません。

2017年2月17日午後5時40分、Jean-ChristopheFillion- Robinnotifications @github.comは次のように書いています。

rif = sitk.ResampleImageFilter()
rif.SetSize(np.array([1、2、3]、dtype ='int'))
TypeError:メソッド'ResampleImageFilter_SetSize'で、タイプ'std :: vector <uint32_t、std :: allocator <uint32_t >> const&'の引数2

np.array([1、2、3]、dtype ='int')。tolist()がトリックを実行します。 すぐにPRを作成します。

@blowekamp numpy配列をパラメーターとして直接理解するために、ラッピングレイヤーを改善することは理にかなっていますか?


あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。

@blowekamp実際、私が最初に試したのはnp.array([1, 2, 3], dtype='uint32')でしたが、機能しません。

@haarburger 、「uint」も試してみましたか?

はい、どちらも機能しません。

私はさらに調査する必要があります。 SimpleITK Issueを作成し、問題が発生したSimpleITKバージョン、OS、PythonDistributeなどを含めてください。

SimpleITK 1.0rc1に同じ問題があるかどうかを確認しましたか?

@blowekampこの問題は1.0rc1でも発生します。

#205で解決

このページは役に立ちましたか?
0 / 5 - 0 評価