Criação de Plugins Python

<< Clique para Mostrar o Sumário >>

 

Criação de Plugins Python

Durante o processo de análise é comum não recordar da chamada de alguma função que se deseja aplicar sobre os dados de processo, principalmente quando o número de bibliotecas e funções disponíveis é elevado. O que é desejado por um lado, pois isto confere maior poder e flexibilidade nas análises, porém também traz este inconveniente relacionado à lembrança das assinaturas das funções.

Com o intuito de facilitar o acesso às principais funcionalidades utilizadas, adicionou-se a possibilidade de criação de plugins neste ambiente integrado de análises. Os plugins nada mais são do que módulos que estendem as funcionalidades do ambiente Dataset Analysis a fim de atender às necessidades do analista e, neste caso, apresentados sob a forma de comandos de fácil acesso apresentados na Faixa de Opções contextual do ambiente Dataset Analysis.

No grupo Python Plugins da Faixa de Opções contextual do ambiente Dataset Analysis são apresentados todos os plugins encontrados no diretório My Documents\Elipse Software\EPM Studio\Plugins, sejam proprietários ou desenvolvidos por terceiros.

A figura a seguir mostra um plugin denominado de MyPlugin, carregado para a Faixa de Opções do grupo Python Plugin quando o console Python foi aberto pela primeira vez.

Python plugin

Python plugin

 

NOTAS

Caso não exista nenhum plugin neste diretório, nada é carregado para a Faixa de Opções no momento em que o console Python é ativado pela primeira vez ao expandir o console clicando na área Scripting.

Dentro do diretório Plugins, caso não exista, é criado automaticamente um arquivo denominado __init__.py. Este arquivo é o responsável por resolver os caminhos para o carregamento dos módulos de plugins e não deve ser alterado, sob pena de parar o funcionamento correto dos plugins do ambiente integrado de análises. Caso haja algum problema, este arquivo pode ser removido para que um novo seja criado da próxima vez que um console Python é aberto no ambiente integrado de análises do EPM Studio.

 

A criação e uso de um plugin Python neste ambiente é apresentado no passo a passo a seguir, utilizando um exemplo como referência.

1.Crie um diretório em My Documents\Elipse Software\EPM Studio\Plugins chamado "plugin", que deve aparecer na Faixa de Opções. Neste caso foi criado um diretório chamado de "MyPlugin".

2.Crie um arquivo chamado de MyPlugin.py.

3.Adicione uma imagem com a extensão .png a ser utilizada como ícone do plugin na Faixa de Opções. Se houver mais de uma imagem, apenas uma é utilizada. A figura a seguir apresenta o resultado dos passos anteriores.

Pasta Plugins

Pasta Plugins

4.Adicione o código a seguir ao arquivo MyPlugin.py.

1  # -*- coding: utf-8 -*-
2  import Plugins as ep
3  @ep.DatasetFunctionPlugin(displayName ='My MAvg Filter ', position =1, retVar='yf')
4  def myMAvgPlugin():
5     """Filtro de média móvel de ordem 3.
6     """
7     pass

 

Apenas com o fragmento de código acima, ao expandir o console Python pela primeira vez, este plugin já é carregado e apresentado na Faixa de Opções dentro do grupo Python Plugin.

A primeira linha refere-se a uma particularidade da linguagem Python na versão 2.7, que informa a codificação deste arquivo, neste caso em Unicode (utf-8), fundamental para que não ocorram erros durante o processo de execução deste script decorrentes de caracteres especiais não suportados pela codificação ASCII, padrão do Python em versões anteriores à versão 3.

A segunda linha carrega o módulo Plugins do EPM Studio e define um apelido ep para facilitar o uso no código. Este módulo é instalado juntamente com o EPM Studio. É necessário apenas ter uma versão do Python 2.7 instalada na máquina e registrada no Windows para que este módulo possa ser utilizado neste ambiente integrado de análises.

O módulo Plugins do EPM Studio oferece as funcionalidades descritas na tabela a seguir.

Funcionalidades básicas do módulo Plugins do EPM Studio

Funcionalidade

Descrição

DatasetFunctionPlugin

Esta função é um decorator do Python que serve para indicar quais funções do script devem ser interpretadas como um plugin do EPM Studio. Contém os parâmetros displayName: Uma String do Python que corresponde ao nome que aparece na lista de opções de comandos do plugin, position: Um inteiro, opcional, que indica a ordem da função na lista de opções de comandos do plugin. Ao carregar este plugin, todas as funções com o decorator são dispostas em ordem crescente, de acordo com este parâmetro, e retVar: Uma String, opcional, com o nome da variável criada no console Python. Basicamente, se uma função retorna um valor, este está disponível no console através de uma variável com o nome informado neste parâmetro

EpmDatasetPens

Este objeto guarda um mapeamento com as informações relacionadas a todas as Penas presentes em um Dataset e fornece os atributos Pens: Uma lista com todas as Penas e SelectedPens: Uma lista com todas as Penas selecionadas, geralmente utilizada para seleção dos dados com os quais se deseja realizar algum processamento. As listas retornam instâncias de Penas do Dataset que, por sua vez, contém os atributos Plotted: Booleano que indica se a Pena está visível na área do gráfico ou não, Selected: Booleano que indica se a Pena está selecionada ou não e Values: Uma matriz do tipo numpy.ndarray com as colunas Value, Timestamp e Quality

plotValues

Esta função cria uma nova Pena no primeiro eixo da área do gráfico, que não pode ser removido. Os argumentos, obrigatórios, são caption: Uma String que corresponde ao nome da Pena e que, se já existir, é sobrescrito e valueArray: Uma matriz do tipo numpy.ndarray com as colunas Value, Timestamp e Quality a serem apresentadas no gráfico

showMsgBox

Esta função é oferecida como uma facilidade para apresentar informações ao analista e abre uma caixa de diálogo modal com um título, uma mensagem, um ícone indicando a natureza da mensagem e um botão OK para fechá-la. Os parâmetros disponíveis são title: Uma String que corresponde ao título da caixa de diálogo, text: Uma String que corresponde à mensagem da caixa de diálogo e severity: Uma String que corresponde à natureza da informação, ou seja, "Information", "Warning" ou "Error"

 

À terceira linha é adicionado o decorator Python, indicando que a função da linha subsequente deve ser interpretada como um plugin do ambiente integrado de análises do EPM Studio.

Na quarta linha vem a declaração da função Python, onde deve estar a implementação da lógica que o plugin executa. Logo abaixo da declaração da função há uma área demarcada por três aspas duplas, que para a linguagem Python representa um docstring, ou seja, um texto que é utilizado para documentar a função e é apresentado ao executar o comando help seguido do nome da função como argumento. Este mesmo conteúdo é apresentado em uma dica quando se passa o mouse sobre uma das opções de comandos implementados no plugin.

Retomando o exemplo apresentado anteriormente, após implementar a função que efetivamente aplica um filtro de média móvel aos dados selecionados, execute a consulta uma vez, já com o console Python aberto e o plugin carregado, selecione a Pena para se aplicar o filtro e na Faixa de Opções selecione a opção My MAvg filter do plugin MyPlugin. O resultado desta operação é apresentado na figura a seguir.

Plugin My MAvg filter

Plugin My MAvg filter

Observe que ao passar o ponteiro do mouse sobre a opção My MAvg filter, as informações do conteúdo do docstring da função no plugin são mostradas. Esta funcionalidade facilita a documentação das funções e o posterior uso por terceiros.

 

NOTAS

A seção Acessórios na Página de Downloads do EPM no Site da Elipse Software contém um exemplo de plugin para uso no ambiente Dataset Analysis, chamado de DatasetAnalysis Python Plugin Sample (EPM v.3).

Este mesmo exemplo também encontra-se no Repositório de Exemplos do EPM no GitHub da Elipse Software que, além de um Artigo de Exemplo de Criação de Plugins e outros conteúdos, também contém o pacote DemoTools de exemplos de plugins Python no ambiente Dataset Analysis.

Além deste conteúdo, é possível assistir no canal da Elipse Software no YouTube o webinar Agilizando Análises no EPM com o Poder da Linguagem Python, que trata da criação de plugins.

Alguns artigos que utilizam este recurso para facilitar análises podem ser encontrados nos Artigos Relacionados ao EPM Studio no GitHub da Elipse Software.

Esta página foi útil?