Перейти к статье

 

Фильтры FidesysViewer

Создание фильтров в FidesysViewer

Создание фильтров в pvpython

Изменение свойств фильтра в FidesysViewer

Изменение свойств фильтра в pvpython

Фильтры для данных дополнительных настроек

Фильтры для геометрической обработки

Фильтры для отбора проб

Фильтры для управления атрибутами

Фильтры белого ящика

Любимые фильтры

Лучшие практики

 

В FidesysViewer фильтры - это конвейерные модули или алгоритмы, которые имеют входы и выходы. Они принимают данные на своих входах и производят преобразованные данные или результаты на своих выходах. Фильтр может иметь несколько портов ввода и вывода. Количество портов ввода и вывода на фильтре фиксировано. Каждый входной порт принимает входные данные для определенной цели или роли в фильтре.

Рисунок 1 Фильтр - трубный модуль со входами и выходами.

Данные поступают через входы. Фильтр преобразует данные и выдает результирующие данные на своих выходах. Фильтр может иметь один или несколько портов ввода и вывода. Каждый входной порт может дополнительно принимать несколько входных соединений.

Создание фильтров в FidesysViewer

Сам входной порт может дополнительно принимать несколько входных подключений, например, фильтр Добавить наборы данных, который добавляет несколько наборов данных для создания единого набора данных, имеет только один входной порт (с именем Вход). Однако этот порт может принимать несколько подключений для каждого из добавляемых наборов данных. Фильтры определяют, может ли конкретный входной порт принимать одно или несколько входных соединений. Как и в случае со считывателями, свойства фильтра позволяют управлять алгоритмом фильтрации. Доступные свойства зависят от самого фильтра.

Все доступные фильтры в FidesysViewer перечислены в меню Фильтры. Они сгруппированы по различным категориям. Чтобы создать фильтр для преобразования данных, созданных источником или устройством чтения, вы выбираете источник в браузере конвейера, чтобы сделать его активным, а затем щелкаете соответствующий пункт меню в меню Фильтры. Если пункт меню отключен, это означает, что активный источник не производит данные, которые могут быть преобразованы этим фильтром.

Подключение нескольких входов

Когда вы создаете фильтр, активный источник подключается к первому входному порту фильтра. Такие фильтры, как Добавить наборы данных, могут принимать несколько входных подключений к этому входному порту. В таком случае, чтобы передать несколько модулей конвейера в качестве соединений на один входной порт фильтра, выберите все соответствующие модули конвейера в браузере конвейеров. Вы можете выбрать несколько элементов с помощью клавиш Ctrl и ↑ клавишных модификаторов. Если выбрано несколько модулей конвейера, в меню Фильтры будут включены только фильтры, которые принимают несколько соединений на своих входных портах.

Рисунок 2 Браузер конвейера, показывающий конвеер с несколькими входными соединениями.

Фильтр дополнительных наборов данных имеет два входных соединения на своем единственном входном порте, Sphere0 и Cone0.

Несколько входных портов

Большинство фильтров имеют только один входной порт. Следовательно, как только вы щелкнете имя фильтра в меню Фильтры, он создаст новый экземпляр фильтра, который отобразится в браузере конвейера. Некоторые фильтры имеют несколько входов, которые необходимо настроить перед созданием фильтра. В таком случае, когда вы щелкаете имя фильтра, появляется диалоговое окно Изменить вводный диалог, как показано на рисунке 3. Это диалоговое окно позволяет вам выбрать модули конвейера, которые будут подключены к каждому из входных портов. Активный источник(и) по умолчанию подключен к первому входному порту. Вы также можете изменить их.

Изменение входных соединений

FidesysViewer позволяет вам изменить входные данные для фильтра после того, как фильтр был создан. Чтобы изменить входные данные на фильтр, щелкните правой кнопкой мыши фильтр в браузере конвейера, чтобы открыть контекстное меню, а затем выберите Изменить вход ... Появится тот же диалог изменения ввода, что и при создании фильтра с несколькими входными портами. Вы можете использовать это диалоговое окно, чтобы установить новые входные данные для этого фильтра.

 

Рисунок 3 Окно Изменить вводный диалог показано, чтобы вы могли выбрать входы для каждого из входных портов для фильтра с несколькими входными портами.

С помощью этого диалогового окна сначала выберите входной порт, который вы хотите редактировать с левой стороны, и выберите модуль(и) конвеера, который должен быть подключен к этому входному порту. Повторите шаг для другого входного порта(ов). Если порт ввода может принимать несколько входных соединений, вы можете выбрать несколько модулей, как в браузере конвейеров.

 

Рисунок 4 Контекстное меню в обозревателе конвейеров, показывающее возможность изменения входных параметров для фильтра.

Создание фильтров в pvpython

Чтобы создать фильтр в pvpython, вы просто создаете объект, используя его имя в качестве функции-конструктора.

Как и в случае с FidesysViewer, фильтр будет использовать активный источник(и) в качестве входных данных. Кроме того, вы можете явно указать ввод в аргументах функции.

Подключение нескольких входов

Чтобы настроить несколько входных подключений, вы можете указать подключения следующим образом:

Несколько входных портов

Настройка подключений к нескольким входным портам аналогична настройке нескольких входных подключений, за исключением того, что вам необходимо убедиться, что вы правильно называете входные порты.

Изменение входных соединений

Изменить входные данные в Python так же просто, как установить любое другое свойство в фильтре.

Изменение свойств фильтра в FidesysViewer

Фильтры предоставляют свойства, которые вы можете изменять для управления алгоритмом обработки, используемым фильтром. Изменение и просмотр свойств фильтров происходит так же, как и для любого другого модуля конвейера, включая считыватели и источники. Вы можете просматривать и изменять эти свойства, если они доступны, с помощью панели Свойства. Поскольку на этой панели отображаются только свойства активного источника, вы должны убедиться, что интересующий вас фильтр активен. Чтобы сделать фильтр активным, в браузере конвейера щелкните фильтр и выберите его.

Изменение свойств фильтра в pvpython

В pvpython доступные свойства доступны как свойства объекта фильтра, и вы можете получать или устанавливать их значения по имени.

 

Фильтры для данных дополнительных настроек

Эти фильтры используются для извлечения подмножеств из входного набора данных. Как это подмножество определяется и как оно извлекается, зависит от типа фильтра. К таким фильтрам относятся:

Срез

Сечение

Порог

Извлечь выделенное

Фильтры для геометрической обработки

Эти фильтры используются для преобразования геометрии набора данных, не влияя на его топологию или связность. К таким фильтрам относятся:

Трансформация

Отразить

Деформировать по вектору

Фильтры для отбора проб

Эти фильтры вычисляют новые наборы данных, которые представляют некоторые важные функции из наборов данных, которые они принимают в качестве входных. К таким фильтрам относятся:

Построить векторное поле

Проверить расположение

Построить график вдоль линии

Фильтры для управления атрибутами

Фильтры, описанные в этом разделе, используются для добавления новых массивов атрибутов в набор данных, которые обычно используются для добавления производных величин для использования в конвейерах для дальнейшей обработки. К таким фильтрам относятся:

Калькулятор

Фильтры белого ящика

Фильтры белого ящика включают в себя программируемый фильтр и программируемый источник. Для данных фильтров / источников вы можете добавить код Python для генерации или обработки данных.

Любимые фильтры

Если вы используете одни фильтры чаще, чем другие, вы можете упорядочить их в меню Избранное. Это можно сделать из контекстного меню в конвейере или через меню Фильтры, Избранные, Управление избранным, как показано на рисунке 5. В этом диалоговом окне можно создавать категории и подкатегории. Он поддерживает операцию перетаскивания для сортировки и перемещения фильтров и категорий. Кроме того, избранное выделено в других подменю фильтра на поддерживаемых платформах. Избранное сохраняется в пользовательских настройках, поэтому их можно использовать в других последующих сеансах FidesysViewer.

 

Рисунок 5 Менеджер избранного. Слева - список доступных фильтров. Справа - выбранные избранные.

Лучшие практики

Как избежать взрывного роста данных

Модель конвейера, которую представляет FidesysViewer, очень удобна для исследовательской визуализации. Слабая связь между компонентами обеспечивает очень гибкую структуру для создания уникальных визуализаций, а структура конвейера позволяет быстро и легко настраивать параметры. Обратной стороной этой связи является то, что она может иметь больший объем памяти. На каждом этапе этого конвейера хранится собственная копия данных. По возможности FidesysViewer выполняет неглубокие копии данных, чтобы разные этапы конвейера указывали на один и тот же блок данных в памяти. Однако любой фильтр, который создает новые данные или изменяет значения или топологию данных, должен выделить новую память для результата. Если FidesysViewer фильтрует очень большую сетку, неправильное использование фильтров может быстро исчерпать всю доступную память. Поэтому при визуализации больших наборов данных важно понимать требования к памяти фильтров. Имейте в виду, что следующий совет предназначен только для работы с очень большими объемами данных, а оставшаяся доступная память недостаточна. Если вам не угрожает нехватка памяти, следующий совет не имеет значения. При работе со структурированными данными абсолютно важно знать, какие фильтры превратят данные в неструктурированные. Неструктурированные данные имеют гораздо больший объем памяти на ячейку, чем структурированные данные, потому что топология должна быть явно записана. В FidesysViewer есть много фильтров, которые каким-то образом изменяют топологию, и эти фильтры будут записывать данные в виде неструктурированной сетки, потому что это единственный набор данных, который будет обрабатывать любой тип создаваемой топологии. Следующий список фильтров будет записывать новую неструктурированную топологию на выходе, которая примерно эквивалентна входной. Эти фильтры никогда не следует использовать со структурированными данными, их следует использовать с осторожностью для неструктурированных данных.

Технически в этот список должны входить ленточные и трубочные фильтры. Однако, поскольку они работают только с одномерными ячейками в поле данных, входные данные обычно малы и не вызывают особого беспокойства. Этот аналогичный набор фильтров также выводит неструктурированные сетки, но также имеет тенденцию сокращать некоторые из этих данных. Однако имейте в виду, что это сокращение данных часто меньше, чем накладные расходы на преобразование в неструктурированные данные. Также обратите внимание, что снижение часто не сбалансировано. Возможно (часто вероятно), что один процесс не может потерять ни одной ячейки. Таким образом, эти фильтры следует использовать с осторожностью для неструктурированных данных и с особой осторожностью для структурированных данных.

Следующий набор фильтров выводит неструктурированные данные, но он также выполняет уменьшение размера данных (например, 3D в 2D), что приводит к гораздо меньшему результату. Таким образом, эти фильтры обычно безопасно использовать с неструктурированными данными и требуют лишь небольшой осторожности со структурированными данными.

Приведенные ниже фильтры вообще не изменяют возможности подключения данных. Вместо этого они только добавляют к данным массивы полей. Все существующие данные копируются неглубоко. Эти фильтры обычно безопасно использовать для всех данных.

Этот окончательный набор фильтров либо не добавляет никаких данных к выходным данным (все важные данные копируются неглубоко), либо данные, которые они добавляют, обычно не зависят от размера входных данных. Их почти всегда безопасно добавлять при любых обстоятельствах (хотя это может занять много времени).

Есть несколько специальных фильтров, которые не подходят ни к одному из предыдущих классов. Некоторые из фильтров, в настоящее время Temporal Interpolator и Particle Tracer, выполняют вычисления на основе того, как данные меняются с течением времени. Таким образом, этим фильтрам может потребоваться загрузить данные для двух или более периодов времени, что может удвоить или более количество данных, необходимых в памяти. Фильтр временного кэша также будет хранить данные за несколько периодов времени. Имейте в виду, что некоторым временным фильтрам, таким как временная статистика, и фильтрам, которые строят график во времени, может потребоваться итеративная загрузка всех данных с диска. Таким образом, это может занять непрактично много времени, даже если не требует дополнительной памяти. Программируемый фильтр - это тоже особый случай, который невозможно классифицировать. Поскольку этот фильтр делает то, что он запрограммирован, он может попасть в любую из этих категорий.

Удаление данных

При работе с большими данными лучше по возможности удалять данные и делать это как можно раньше. Большинство больших данных начинаются с трехмерной геометрии, а желаемой геометрией часто является поверхность. Поскольку поверхности обычно имеют гораздо меньший объем памяти, чем объемы, из которых они созданы, лучше преобразовать в поверхность на ранней стадии. Как только вы это сделаете, вы можете относительно безопасно применять другие фильтры. Очень распространенной операцией визуализации является извлечение изоповерхностей из объема с помощью контурного фильтра. Контурный фильтр обычно выводит геометрию, намного меньшую, чем его ввод. Таким образом, контурный фильтр следует наносить заранее, если он вообще будет использоваться. Будьте осторожны при настройке параметров контурного фильтра, потому что он все еще может генерировать много данных, что может произойти, если вы укажете много значений изоповерхностей. Высокие частоты, такие как шум вокруг значения изоповерхности, также могут вызывать образование большой неровной поверхности. Другой способ заглянуть внутрь объема - выполнить на нем сечение. Сечение-фильтр будет пересекать объем с плоскостью и позволит вам видеть данные в объеме, где пересекается плоскость. Если вы знаете относительное расположение интересного объекта в большом наборе данных, срезание - хороший способ его просмотреть. Если у вас мало априорных знаний о ваших данных и вы хотите исследовать данные без большой памяти и времени обработки для полного набора данных, вы можете использовать фильтр Извлечь подмножество для подвыборки данных. Субдискретизированные данные могут быть значительно меньше исходных и при этом должны быть хорошо сбалансированы по нагрузке. Конечно, имейте в виду, что вы можете пропустить мелкие объекты, если подвыборка перешагнет их, и что как только вы найдете функцию, вам следует вернуться и визуализировать ее с полным набором данных. Есть также несколько функций, которые могут извлекать подмножество объема: Срез, Порог, Извлечь выделенное могут извлекать ячейки на основе некоторого критерия. Однако имейте в виду, что извлеченные клетки почти никогда не бывают хорошо сбалансированы; ожидайте, что в некоторых процессах не будут удалены ячейки. Все эти фильтры преобразуют структурированные типы данных в неструктурированные сетки. Следовательно, их не следует использовать, если извлеченные ячейки не по крайней мере на порядок меньше исходных данных. По возможности замените фильтр, извлекающий 3D-данные, фильтром, извлекающим 2D-поверхности. Например, если вас интересует плоскость через данные, используйте фильтр Сечение, а не фильтр Срез. Если вас интересует расположение области ячеек, содержащих определенный диапазон значений, рассмотрите возможность использования контурного фильтра для создания поверхностей на концах диапазона, а не извлечения всех ячеек с помощью порогового фильтра. Помните, что замена фильтров может повлиять на фильтры, расположенные ниже по потоку. Например, запуск фильтра гистограммы после порогового значения будет иметь совершенно другой эффект, чем запуск его после примерно эквивалентного контурного фильтра.