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:
- Você pode usar o código Python encontrado nos seus Jupyter notebook a partir do KNIME.
- 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
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)”.
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):
Em seguida, podemos executar um workflow KNIME no Jupyter notebook, apenas fornecer o caminho dentro dos diretórios até o workflow KNIME (Figura 7).
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).
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).
Os dados estão em Pandas DataFrames (Figura 10).
É 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).