Analytic PlatformKNIMEWorkflow

Jupyter Notebook – Como fazer a integração com KNIME

mostrar a integração de duas plataformas

A plataforma KNIME Analytics sempre teve uma boa integração com Python. Existem diversos nodes no KNIME que você pode executar seus scripts Python, inclusive seus Jupyter notebook.

Você sabia que existem 2 importantes recursos interessantes, relacionados a esta integração entre Python e KNIME ? São eles:

  1. Você pode usar o código Python encontrado nos seus Jupyter notebook a partir do KNIME.
  2. Você também pode executar workflows KNIME de dentro do seu código ou script Python. Se você estiver trabalhando em um Jupyter notebook, também poderá obter uma visão estática (print) do workflow no notebook.

Nesta postagem, aprofundaremos um pouco mais sobre o que você pode fazer ao aplicar estas integrações.

Usuário KNIME: “Nossa! Você pode colocar o seu Jupyter notebook  no meu workflow!”

Usuário Jupyter Python: “Nossa! Você pode executar executar seu workflow através do meu Jupyter notebook!”

Ambos: “Oooo, eles funcionam muito bem juntos!” 

1 – Usando o Código do Jupyter no KNIME

Primeiramente, vamos começar usando o código dos notebooks Jupyter dentro do KNIME.

Sim, com KNIME !

Muitos analistas de dados optam por Jupyter notebooks ao trabalhar com Python, pois ele proporciona um manuseio super interativo e dinâmico dos dados durante a análise. 

Isso tudo através de suas diversas integrações, como por exemplo com matplotlib, além da possibilidade de fazer anotações sobre o que se está sendo feito, montando assim um passo a passo.

Usando o pacote KNIME_JUPYTER, que está automaticamente disponível em todos os nodes KNIME Python Script, podemos carregar o código que está presente em um notebook e usá-lo diretamente.

Faça da seguinte maneira:

  • Chame load_notebook com o caminho para o diretório que contém seu notebook e o nome do notebook. O objeto notebook que load_notebook retorna fornece acesso a todas as funções e variáveis ​​definidas no próprio notebook
  • No exemplo abaixo criamos a variável nb contendo knime_jupyter.load_notebook.
  • Através de nb podemos acessar qualquer função ou variável contida no notebook original.
  • Por fim, adicione os resultados da incorporação à tabela de saída
Jupyter Notebook in python script

2 – Usando workflows KNIME em notebooks Jupyter

Você pode chamar facilmente workflows KNIME de dentro de um Jupyter notebook (ou de outros scripts Python).

Para fazer isso é simples. Em primeiro lugar, você precisa instalar o pacote knime python do PyPI fazendo pip install knime. Logo depois de instalar este pacote, você está pronto para trabalhar com workflows KNIME em Python.

Para este blog post, trabalharemos com um workflow criado para consultar o banco de dados ChEMBL, em busca de informações sobre alvos biológicos e as bioatividades que foram medidas para eles, consulte a Figura 5.

Os detalhes da consulta estão encapsulados no metanode “Retrieve assays, activities, and targets”.

O restante do workflow faz alguns GroupBys diferentes nos resultados dessa consulta e, em seguida, os filtra usando um conjunto de IDs de destino em uma tabela fornecida pelo usuário (no node “Container Input (Table)”). 

As duas diferentes tabelas filtradas são disponibilizadas usando os nodes “Container Output (Table)”.

Fluxo de trabalho KNIME para realizar uma consulta complexa ao banco de dados - recuperar ensaios, atividades e destinos, seguido de filtragem para uma tabela fornecida pelo usuário.
Fig. 5: Fluxo de trabalho para realizar uma consulta complexa ao banco de dados – recuperar ensaios, atividades e alvos, seguido de filtragem para uma tabela fornecida pelo usuário.

Este workflow executa um tipo de consulta que eu faço regularmente e embora seja definitivamente possível fazer isso a partir de Python (ou diretamente no Jupyter notebook usando a excelente magia% sql de Catherine Devlin), Acho muito mais fácil construir e testar consultas complexas de banco de dados no KNIME.

Antes de mais nada, vamos ver como usar esse workflow de dentro do Jupyter notebook. 

O notebook usando neste exemplo está disponível aqui: https://gist.github.com/greglandrum/d721822e8973ff8438cf2af283c9271e

3 – Executando um Workflow a partir de um Jupyter Notebook

Em primeiro lugar, começamos importando o módulo knime do Python e dizendo a ele onde está meu executável KNIME (isso não é necessário se KNIME estiver instalado em um local padrão):

Fig 6. Importando o módulo knime em Python e informando a localização do executável KNIME

Em seguida, podemos executar um workflow KNIME no Jupyter notebook, apenas fornecer o caminho dentro dos diretórios até o workflow KNIME (Figura 7).

Abrindo um fluxo de trabalho KNIME no Jupyter, especificando o caminho do sistema de arquivos para o espaço de trabalho KNIME e a localização do fluxo de trabalho nesse espaço de trabalho.
Fig. 7: Abrindo um fluxo de trabalho KNIME no Jupyter, especificando o caminho do sistema de arquivos para o espaço de trabalho KNIME e a localização do fluxo de trabalho nesse espaço de trabalho.

Através do knime.workflow você pode visualizar um “print” de todo o workflow dentro do seu Jupyter notebook.

Então, chamamos e executamos o workflow KNIME armazenando seus outputs em um Pandas Dataframe.(Figura 8).

Chamar o fluxo de trabalho criando um Pandas DataFrame com a tabela de consulta.  O KNIME é iniciado e executado em segundo plano, retornando o controle ao Jupyter assim que o fluxo de trabalho for executado.
Fig. 8: Chamar o workflow criando um Pandas DataFrame com a tabela de consulta. O KNIME é iniciado e executado em segundo plano, retornando o controle ao Jupyter assim que o fluxo de trabalho for executado.

Isso inicia o KNIME em segundo plano, executa o workflow e retorna o controle ao Jupyter. Agora posso obter os output do workflow.(Figura 9).

Obter as tabelas de saída do objeto de fluxo de trabalho.
Fig. 9: Obtenção das tabelas de saída do objeto workflow.

Os dados estão em Pandas DataFrames (Figura 10).

Dados de saída em um DataFrame Pandas.
Fig. 10: Dados de saída em um Pandas DataFrame.

É isso aí! Agora posso continuar trabalhando com esses dados no Jupyter.

Observe que embora esta demonstração use o Jupyter notebook, o módulo knime-py também pode ser usado no Python padrão.

Conclusão

Em resumo, neste artigo demonstramos algumas das novas funcionalidades do Python adicionadas ao KNIME. Foi mostrado como você pode usar Jupyter notebook diretamente em seus fluxos de trabalho KNIME e como você pode chamar workflows KNIME  dentro de um Jupyter notebook (ou Python padrão).

Usar o código do Jupyter na plataforma de análise KNIME
Uso de fluxos de trabalho KNIME em Jupyter notebook

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *