Получить значения вдоль линии тока в Mayavi - PullRequest
0 голосов
/ 11 мая 2018

У меня есть поле скорости и профиль плотности, определяемые как vx, vy и vz, и логов. Все эти переменные являются трехмерными массивами, например

vx.shape
(256,256,256)

то же самое для vy, vz и dens.

Команда потока работает правильно, например,

fl = flow(vx,vy,vz, seedtype='point', integration_direction='both', scalars=dens)

и я могу визуализировать линию поля. Теперь, чтобы извлечь значения vx,vy,vz и dens в позициях x, y, z вдоль линии, что я делал в прошлом (я полагаю, несколько лет назад с предыдущей версией mayavi) было

dataset = fl.outputs[0]

тогда

x, y, z = dataset.points.to_array().T
densstream = np.array(dataset.point_data.get_array(0))
vstream = np.array(dataset.point_data.get_array(1))

но работает

x, y, z = dataset.points.to_array().T

Я получаю следующую ошибку:

AttributeError: объект 'AlgorithmOutput' не имеет атрибута 'points'.

Typing

dataset

Я получаю

<tvtk.tvtk_classes.algorithm_output.AlgorithmOutput at 0x1132917d0>

Я использую Mac OS 10.12.6, Python 2.7.15 и IPython 5.5.0. Не могли бы вы помочь мне, пожалуйста?

Приветствия

1 Ответ

0 голосов
/ 31 мая 2018

Более новые версии mayavi изменили выходные порты для некоторых объектов tvtk, из более старой версии tvtk.obj.output в tvtk_obj.output_port. Последний является подклассом attribute_output в tvtk и не содержит точечных данных, что является причиной сообщения об ошибке.

В mayavi / modules / streamline.py, метод _streamline_type_changed (self, value): обновляет порт вывода объекта streamline с помощью configure_outputs(self, st), метода tvtk / common.py, но соединение направляется на self.stream_tracer.output_port вместо self.stream_tracer.output. И последний является правильным подклассом poly_data и содержит точечные данные вдоль линии тока. Таким образом, лекарство просто:

dataset = fl.stream_tracer.output

Кстати, я также попытался изменить вызов функции на configure_outputs(self, st.output), хотя fl.outputs[0] правильно подключен к выходу poly_data, но линии потока больше не отображаются в сцене майави.

...