Ambiente Integrado de Análises

<< Clique para Mostrar o Sumário >>

 

Ambiente Integrado de Análises

O EPM Studio disponibiliza uma ferramenta integrada para análises de Datasets de dados de processo. Logo abaixo da área do gráfico existe a possibilidade de expandir a área Scripting, que inicializa e apresenta um console para execução de comandos em linguagem Python.

Esta ferramenta integrada permite a realização de inúmeras análises sobre os dados do Dataset ou outras variáveis criadas no próprio console, assim como mostrar na mesma área do gráfico os resultados destas análises ou utilizar as bibliotecas gráficas disponíveis na própria linguagem.

Na primeira vez que a área Scripting é aberta em um Dataset Analysis, são carregadas para o console as instruções contidas no arquivo ConsoleInitialization.py. Caso não exista, este arquivo é automaticamente criado na pasta My Documents\Elipse Software\EPM Studio\Libraries do usuário do Windows.

Este arquivo pode ser alterado pelo usuário para executar outros procedimentos na inicialização do console, como por exemplo o carregamento de outras bibliotecas ou para a definição de funções proprietárias. Por padrão, este arquivo já importa a biblioteca numpy e cria uma função de exemplo, sampleSum.

 

NOTAS

A biblioteca numpy (http://www.numpy.org/) é o pacote básico para computação científica em Python. Neste pacote é definido um objeto de matriz n-dimensional que viabiliza a realização de operações matriciais de maneira simples e eficiente, além de inúmeras funcionalidades matemáticas, tais como álgebra linear, cálculo de derivadas e integrais, transformada de Fourier e operações com polinômios, entre outras.

Assim como a biblioteca numpy, também recomenda-se a instalação da biblioteca scipy (https://www.scipy.org/), que utiliza a biblioteca numpy como base para a implementação de inúmeros outros algoritmos para computação científica, tais como interpolações, otimizações, resolução de equações diferenciais, integração numérica, análises de dados e estatísticas, entre outros.

Para a geração de gráficos mais avançados, tais como histogramas, pizza, barra, 3D, box-plot, polar e diagrama de bode, com maior flexibilidade de definição de layouts e com possibilidade de criar interações, recomenda-se a biblioteca matplotlib (https://matplotlib.org/). Para mais detalhes sobre as potencialidades desta biblioteca, visite a galeria de imagens em https://matplotlib.org/gallery/index.html.

Para análises mais avançadas, tais como cálculos estatísticos e mineração de dados, recomenda-se avaliar a biblioteca pandas (http://pandas.pydata.org/).

Não se recomenda a criação de funções proprietárias diretamente no arquivo ConsoleInitialization.py. Ao invés disto, recomenda-se a criação de módulos que podem ser previamente carregados a partir deste arquivo, o que facilita a manutenção do código, bem como o compartilhamento e uso em outras ferramentas.

 

A figura a seguir apresenta um exemplo de um gráfico com os dados de processo do Tag ElipseTag09, em vermelho, e o resultado da aplicação de um filtro de média móvel na variável yf, que é o retorno da função movingAvg desenvolvida especificamente para este exemplo. Este resultado é apresentado no próprio gráfico através da função plot do EPM Dataset Analysis, que recebe dois argumentos, o nome da pena e a variável a ser traçada no gráfico.

>>> yf = mm.movingAvgFilter(ElipseTag09, 3)
>>> plotValues('yf', yf)

 

Exemplo de gráfico com dados de processo

Exemplo de gráfico com dados de processo

 

NOTA

O arquivo MyModule.py com a função utilizada no exemplo anterior, bem como outros exemplos, podem ser obtidos no Repositório de Exemplos do EPM Studio no GitHub da Elipse Software.

 

Ao executar uma consulta do Dataset, clicando em Execute na Faixa de Opções, as variáveis do Dataset são carregadas no console e estão disponíveis para utilização em cálculos. No console, cada uma das variáveis do Dataset é exposta como um objeto Python contendo uma matriz com uma coluna com os valores daquele período, uma coluna com as estampas de tempo e uma coluna com as qualidades de cada valor.

No caso do exemplo anterior, o resultado da função movingAvgFilter é um objeto deste tipo e, portanto, pode ser utilizado como argumento para a função plotValues do EPM Dataset Analysis. Este objeto é definido como um numpy.ndarray, um tipo de dados matriz da biblioteca numpy, cujas colunas são de tipos de dados pré-definidos contendo as colunas Value, Timestamp e Quality.

Para exemplificar melhor este tipo especial de matriz, suponha que ainda não foi carregada a biblioteca numpy para o console, então a criação de uma matriz vazia com cinco linhas e três colunas é definida da maneira indicada a seguir.

>>> import numpy as np
>>> desc = np.dtype([('Value', '>f8'), ('Timestamp', 'object'), ('Quality', 'object')])
>>> y = np.empty( (5,3), dtype = desc)

 

Na primeira linha a biblioteca numpy é carregada para o console e recebe o apelido de np. A segunda linha cria uma variável chamada desc, que descreve as características desejadas da matriz, contendo as colunas Value, Timestamp e Quality, definindo ainda que a primeira coluna contém valores de ponto flutuante de oito bytes (double) e as outras colunas contêm objetos Python. O resultado é uma matriz y de cinco linhas e três colunas preenchida com zeros na primeira coluna e None nas outras colunas.

Existem diversas maneiras para tornar uma biblioteca Python disponível para uso no console. As formas mais usuais são as seguintes:

Importar todas as funções de uma biblioteca. Implica na chamada de funções sem a necessidade de especificar a qual biblioteca pertencem.

>> from LibName import *
>> functionName()

 

Importar uma biblioteca. É necessário informar o nome da biblioteca para as chamadas de funções.

>> import LibName
>> LibName.functionName()

 

Importar uma biblioteca informando um apelido. É necessário informar o apelido da biblioteca para as chamadas de funções.

>> import LibName as LN
>> LN.functionName()

 

Recomendas-se sempre utilizar a última opção, que evita problemas de nomes iguais de bibliotecas distintas, além de facilitar a identificação de qual biblioteca pertence uma dada função utilizada.

 

NOTAS

A coluna Timestamp utiliza o objeto datetime nativo da linguagem Python.

Uma breve introdução à linguagem Python pode ser encontrada no repositório de exemplos de uso do EPM Studio no GitHub da Elipse Software no diretório Python for Newbies.

 

O exemplo a seguir demonstra como remover a média dos dados filtrados no exemplo anterior (yf) e apresentar o resultado armazenado na variável yd. Neste caso é utilizada a função membro copy para facilitar a criação de uma variável do tipo de dados numpy.ndarray.

>>> yd = yf.copy()
>>> yd['Value'] = yd['Value'] - yd['Value'].mean()
>>> plot('yd', yd)

 

Na primeira linha é realizada uma cópia do objeto de dados yf para o novo objeto yd, que é utilizado para calcular a diferença dos valores em relação ao valor médio dos dados.

Na linha seguinte atribui-se ao campo Value do objeto yd, a coluna com os valores, o resultado da diferença entre os valores yd['Value'] e o valor médio yd['Value'].mean(). Assim como a função copy utilizada na linha anterior, a função mean também é uma função membro de objetos do tipo numpy.ndarray.

Na última linha executa-se o comando plotValues do EPM Dataset Analysis, informando o objeto yd para mostrar o resultado da operação, como na figura a seguir.

Exemplo de remoção de média

Exemplo de remoção de média

A linha vermelha corresponde aos dados originais do processo, ElipseTag09, a linha azul é o resultado do filtro de média móvel para remoção dos ruídos de medida, yf, e a linha verde corresponde aos dados filtrados com a média removida, yd.

Neste caso, a linha verde é apresentada em um eixo adicional para facilitar a visualização, uma vez que, ao remover a média, os dados são deslocados para a origem do eixo ordenado devido à operação de remoção da média.

 

NOTAS

A função plotValues sempre cria uma Pena nova no primeiro eixo do gráfico, um eixo que nunca pode ser removido. Caso se informe como parâmetro um nome de Pena já existente, esta é sobrescrita através desta operação.

As Penas criadas através da função plotValues não são persistidas em um Dataset, ou seja, a operação de salvar um Dataset não guarda os dados e as demais variáveis da área de trabalho do Python.

Para que uma área de trabalho seja novamente recarregada, feche o Dataset correspondente e abra-o novamente, forçando a execução do arquivo ConsoleInitialization.py, que é executado apenas na primeira vez que o console Python é aberto expandindo a área Scripting.

É possível recarregar um módulo proprietário ou desenvolvido por terceiros sem fechar um Dataset utilizando a função reload, nativa do Python, passando como argumento o nome do módulo a recarregar. Em geral este comando é muito utilizado na etapa de desenvolvimento de módulos, onde são realizadas alterações no conteúdo e é preciso testar em um Dataset do EPM Studio.

Ressalte-se a facilidade de obtenção do valor médio do vetor de dados utilizando a função membro mean através do comando yd['Value'].mean(), ou seja, calculando a média apenas dos valores, deixando de fora os dados correspondentes à estampa de tempo e qualidade. Isto é possível pois os vetores com os dados são objetos da biblioteca numpy, que contém diversas funções membro para cálculo de médias, desvios padrão, máximos e mínimos, entre outros. Recomenda-se sempre pesquisar as funcionalidades disponíveis na biblioteca numpy (http://www.numpy.org) antes de desenvolver alguma nova funcionalidade.

Esta página foi útil?