Mayavi: mlab.axes () Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Mayavi 4.5.0

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 6 янв. 2017  Β·  9ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: enthought/mayavi

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π½Π΅Π΄Π°Π²Π½ΠΎ я ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Mayavi с 4.4.4 Π΄ΠΎ 4.5.0. ПослС обновлСния я наблюдаю ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ mlab function axes() . Π’ΠΎΡ‚ тСстовый ΠΊΠΎΠ΄ (строка, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ):

from mayavi import mlab
from numpy import pi, sin, cos, mgrid
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
s = mlab.mesh(x, y, z)
mlab.axes(color=(0.9,0.9,0.9))       # LINE CAUSING ERROR
mlab.show()

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° Π² срСдС Windows ΠΈ anaconda я Π²ΠΈΠΆΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…:

Π’ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ сообщСниС (ΠΎΠΊΠ½ΠΎ):

Exception
In c:\anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\tvtk\tvtk_base.py:569
TypeError: SetInputData argument 1:method requires a vtkDataSet, a vtkPolyDataNormals was provided. (in _wrap_call)

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π² ΠΎΠΊΠ½Π΅ консоли:

No handlers could be found for logger "mayavi.core.common"
Exception occurred in traits notification handler.
Please check the log file for details.
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x0000000011AC00A0>, trait: extent, old value: [0 0 0 0 0 0], new value: [-1.53801118  1.53801118 -2.          2.27326963 -1.53801118  1.53801118]
Traceback (most recent call last):
  File "C:\Anaconda\lib\site-packages\traits\trait_notifiers.py", line 340, in __call__
    self.handler( *args )
  File "C:\Anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\mayavi\tools\decorations.py", line 373, in _extent_changed
    axes.module_manager.source.outputs[0].bounds
AttributeError: 'PolyDataNormals' object has no attribute 'bounds'

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация

Π‘Ρ€Π΅Π΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
ОБ: Windows 10
Установка Python: Python 2.7 установлСн с использованиСм Anaconda
ΠŸΠ°ΠΊΠ΅Ρ‚ Mayavi: mayavi 4.5.0 py27_0 menpo
ΠŸΠ°ΠΊΠ΅Ρ‚ VTK: vtk 7.0.0 py27_0 menpo
ΠŸΠ°ΠΊΠ΅Ρ‚ PyQt: pyqt 5.6.0 py27_1

Π‘Ρ€Π΅Π΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ
ОБ: Windows 7
Установка Python: Python 2.7 установлСн с использованиСм Anaconda
ΠŸΠ°ΠΊΠ΅Ρ‚ Mayavi: mayavi 4.4.4 py27_0 menpo
ΠŸΠ°ΠΊΠ΅Ρ‚ VTK: vtk 7.0.0 py27_0 menpo
ΠŸΠ°ΠΊΠ΅Ρ‚ PyQt: pyqt 4.11.4 py27_5

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Если всС Π΅Ρ‰Π΅ интСрСсно, с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ Jeitan, Ρƒ мСня Π±Ρ‹Π»Π° такая ΠΆΠ΅ ошибка, ΠΈ я успокоил Π΅Π΅, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π² mayavi \ modules \ axes.py Π² update_pipeline, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²:
self.configure_input_data (self.axes, src.outputs [0])
ΠΊ:
self.configure_input_data (self.axes, src.outputs [0] .output)

(Π‘Ρ‹Π²ΡˆΠΈΠΉ - это Ρ‚ΠΈΠΏ PolyDataNormals, послСдний - это PolyData, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ DataSet.)

ВсС 9 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Как Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ, я просто ΠΏΡ€ΠΎΠ΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π» эту ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… условиях:

ОБ: Windows 10
Установка Python: Python 2.7 установлСн с использованиСм Anaconda
ΠŸΠ°ΠΊΠ΅Ρ‚ Mayavi: mayavi 4.5.0 py27_0
ΠŸΠ°ΠΊΠ΅Ρ‚ VTK: vtk 6.3.0 py27_1
ΠŸΠ°ΠΊΠ΅Ρ‚ PyQt: pyqt 4.11.4 py27_4

Если я ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρƒ Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΡŽΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ conda install mayavi=4.4 *, ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
Маяви -> 4.4.0
Π’Π’Πš -> 5.10.1

* НСсвязанноС ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ - это ΠΏΠΎΠ½ΠΈΠΆΠ°Π΅Ρ‚ numpy с 1.10 Π΄ΠΎ 1.9.3, Ρ‡Ρ‚ΠΎ Π»ΠΎΠΌΠ°Π΅Ρ‚ Spyder, поэтому Π²Π°ΠΌ придСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ

Π£ мСня здСсь такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Никто Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈ малСйшСго понятия?

Если всС Π΅Ρ‰Π΅ интСрСсно, с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ Jeitan, Ρƒ мСня Π±Ρ‹Π»Π° такая ΠΆΠ΅ ошибка, ΠΈ я успокоил Π΅Π΅, ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π² mayavi \ modules \ axes.py Π² update_pipeline, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²:
self.configure_input_data (self.axes, src.outputs [0])
ΠΊ:
self.configure_input_data (self.axes, src.outputs [0] .output)

(Π‘Ρ‹Π²ΡˆΠΈΠΉ - это Ρ‚ΠΈΠΏ PolyDataNormals, послСдний - это PolyData, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ DataSet.)

Π― Ρ‚ΠΎΠΆΠ΅ столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

@jdonegan Π’Π°ΡˆΠΈ прСдлоТСния

Π£ мСня Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π»Π° эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ исправлСниС ΠΎΡ‚ @jdonegan сработало. Бобирался ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ PR, Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ @prabhuramachandran ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ» Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, которая исправляСт это, вмСсто этого Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ строку Π½Π°:
self.configure_input (self.axes, src.outputs [0])

ΠœΠΎΠΆΠ΅Ρ‚, этот вопрос стоит Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹?

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ исправлСниС слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ строкС 373 Π² дСкорациях.py:
axes.axes.ranges = \
axes.module_manager.source.outputs [0] .output.bounds

Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ
Β«AttributeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ 'PolyDataNormals' Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² 'bounds'Β»

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ фиксация 996fb25 устранила Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Как ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ» @TinghuiWang , это Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах. Однако, Π² зависимости ΠΎΡ‚ вашСго Π²Ρ‹Π·ΠΎΠ²Π° ΡΡŽΠΆΠ΅Ρ‚Π° (для мСня это Π±Ρ‹Π» plot3d vs points3d), Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π― исправил это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ mayavi\modules\axes.py Π² строкС 173 я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»

self.configure_input_data(self.axes, src.outputs[0])

ΠΊ

data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
self.configure_input_data(self.axes, data)

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π² \mayavi\tools\decorations.py Π² строкС 372 я смог

axes.axes.ranges = axes.module_manager.source.outputs[0].bounds

ΠΊ

src = axes.module_manager.source
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
axes.axes.ranges = data.bounds

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΈΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅, рСбята. Π’ΠΎΠΏΠΎΡ€Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Ρ‹.

БлСдуя ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ, я Ρ€Π΅ΡˆΠΈΠ» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρƒ мСня всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x11a41ce60>, trait: extent, old value: [0 0 0 0 0 0], new value: [ -2. 17. -2. 17. -4.85316642 6.54683358] NoneType: None

ΠΈ Π±Π΅Π· обозначСния осСй Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ? Бпасибо!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ