Nuevos Motores de Reglas y Scripting sobre lenguajes R y Python

A partir de la última Release se han añadido a las capacidades de Sofia2 la posibilidad de definir las Reglas y los Scripts en R y Python. Este avance nos permite aprovechar el conocimiento y librerías sobre estos dos lenguajes para crear complejas lógicas y se acerca más a la línea de trabajo de Analytics.

De la misma forma que como se estaba realizando anteriormente, los Scripts pueden invocarse ante una inserción, como resultado de una Regla CEP o bien planificarse. Además se incluyen APIs en R y Python para insertar/extraer información de la base de datos de tiempo Real con los comandos insertIntoBDTR y getFromBDTR.

La manera de utilizar estos métodos es la siguiente:

En R dentro de la API ApiSofiaR:

· getFromBDTR(ontology, queryFind = mongo.bson.empty(), sortQuery = mongo.bson.empty(), fieldsQuery = mongo.bson.empty(), limitQuery = 0L, skipQuery = 0L) – Solo es estrictamente necesario incluir la ontología, el resto son parámetros opcionales para realizar la consulta.

· insertIntoBDTR(mongoHost, mongoUser, mongoPass, ontology, mongoInstance) – En este caso es necesario conocer la información sobre la conexión a la BDTR, el nombre de la ontología y la instancia a Insertar. Hay que tener en cuenta que en R se debe convertir la instancia a formato bson previamente:

data_bson<-lapply(data_json,function(x) mongo.bson.from.JSON(x))

insertIntoBDTR("host", "user", "pass", "ontology", data_bson)

En python dentro de la API ApiSofiaPython:

· getFromBDTR(ontology, queryFind = None, sortQuery = None, fieldsQuery = None, limitQuery = 0, skipQuery = 0)– Al igual que en R sólo es estrictamente necesario incluir la ontología, el resto son parámetros opcionales para realizar la consulta.

· insertIntoBDTR(mongoHost, mongoUser, mongoPass, ontology, mongoInstance) – Es necesario conocer la información sobre la conexión a la BDTR, el nombre de la ontología y la instancia a Insertar. Además, permite realizar inserciones de varias instancias, por ejemplo: insertIntoBDTR("host", "user", "pass", "ontology", [{key1:value1},{ key2:value2},{ key3:value3},{ key4:value4}])

Nuevos Motores de Reglas y Scripting sobre lenguajes R y Python

5 Tendencias Big Data en el ámbito Financiero para 2016

La adopción de estándares y plataformas cada vez más maduras cambiaré el foco Big data desde los proyectos de Infraestructura IT-driven a soluciones Business-driven.

1. La aparición de potentes Casos de Uso en el ámbito Big Data (por fin!!!)

2. El Smart Data Lake

3. Democratización del acceso a los datos

4. Amplio despliegue de soluciones Big Data en medianas empresas

5. El ascenso del Big Data Governance

Leer más

5 Tendencias Big Data en el ámbito Financiero para 2016

DISPONÍVEL A VERSÃO 2.24.0 de SOFIA2

Já está disponível a versão 2.24.0 de Sofia2, esta versão também foi disponibilizada na Plataforma Experimental Sofia2 CloudLab.

Ver versões

Esta nova versão acrescenta à Plataforma as seguintes funcionalidades:

  •  Novos Motores de Regras e Scripting nas linguagens R e Python

A partir desta versão, as Regras e os Scripts podem definir-se nas linguagens Groovy, R e Python, o que permite aproveitar o conhecimento e as livrarias sobre estas duas linguagens para criar lógicas complexas.

Os Scripts podem invocar-se face a uma inserção, como resultado de uma Regra CEP ou então planificar-se.

Além disso, incluem-se APIs em R e Python para inserir/extrair informação da base de dados de tempo real com os comandos insertIntoBDTR e getFromBDTR.

Na linguagem R podemos:

E em Python:

  • Novo Tipo de Gadget Shiny

Shiny é um framework em R para construir aplicações Web. Permite de uma forma muito simples via scripts R criar visualizações HTML5 com livrarias Javascript muito potentes como D3 (ver exemplos) ou Google Charts, permitindo inclusive desenvolver visualizações dinâmicas em tempo real.

Nesta versão, Sofia2 suporta este novo tipo de Gadget, o que permite facilmente criar visualizações como esta:

A forma de criar os gadgets é muito simples, permite carregar folhas de estilo e outros ficheiros:

Permite-nos ainda ver em tempo real o aspecto da visualização:

 

  • Integração de Sofia2 com Brandwatch Analytics

Relativamente às capacidades de Sofia2, de extração de informação a partir de diversas redes sociais, acrescentou-se a capacidade de integração com Brandwatch Analytics para os casos onde sejam necessárias capacidades específicas.

Desta forma, permite-se aproveitar toda a informação armazenada e processada a partir de Brandwatch em Sofia2 e relacioná-la com a informação restante utilizada na Plataforma. Estas capacidades são utilizadas na nossa proposta de valor Social Media Command Center (SMCC) como solução diferencial e analítica nas redes sociais.

Neste vídeo, explicam-se em detalhe os benefícios desta solução: https://www.youtube.com/watch?v=4owqcW-pAgw

A integração suporta a adição de diversas configurações Brandwatch, configurar pesquisas, planificar a execução destas pesquisas, definir modelos de pesquisas e por fim armazenar os resultados destas pesquisas como ontologias Sofia2.

Uma vez armazenados os resultados das pesquisas como ontologias Sofia2, será possível aplicar regras sobre estas pesquisas e representá-las em dashboards,…

  • Integração Sofia2 com a Solução Horus da Indra

Nesta versão, desenvolveu-se uma integração com a solução da Inda, para a gestão inteligente de tráfego e túneis Horus, que está implementada em sistemas tão importantes quanto os dos centros de controlo de tráfego de túneis de Londres.

Desenvolveu-se um conector para consumir informação de Horus, o que permite por exemplo representá-la no Visor Holístico de Sofia2 (eVidens) juntamente com os ativos restantes,  tomar decisões em tempo real sobre esta informação com os motores de regras de Sofia2 ou efetuar processos analíticos e preditivos sobre esta informação.

Podemos verificar como a informação de Horus

é representada no Visor Holístico eVidens de forma automática:

Esta integração permite ampliar as capacidades de ambas as soluções, permitindo novas interações, por exemplo oferecer facilmente informação dos painéis nos perfis das Redes Sociais. Na imagem podemos ver uma regra, que publica na conta Twitter de um membro da equipa, o texto de um painel informativo em tempo real:

 

  • Demo Pay As You Drive (PAYD)

Graças à equipa da Vodafone e Oysta temos em funcionamento uma primeira versão desta demo, que inclui uma abordagem social e de gamificação com o objetivo de reduzir o número de sinistros e o preço do seguro.

Um dispositivo OBD-2 recolhe informação em tempo real a partir do carro (coordenadas GPS, velocidade, consumo combustível,…), envia a mesma para a plataforma onde se realizam análises, geram-se alertas,… além disso incluem-se 2 portais: um para o utilizador e outro para o administrador, no qual cada utilizador pode ver informação relevante.

image017         image031

Se tiver interesse em visualizar a demo, pode entrar em contacto connosco através do endereço indicado.

 

  • Nova Versão do Editor de Scripts

Com a nova versão, atualizou-se o editor do motor de scripting.

Para além da alteração de tema do editor, salientaram-se as palavras-chave de cada linguagem, que são muito práticas já que é possível realizar scripts em Groovy, Python e R. Além disso, contém novas funções de pesquisa de texto, seleção por colunas, expansão da janela…  que facilitam muito a edição de scripts.

  • Novo Sink Sofia2 em Sofia2-DataFlow

Acrescentou-se ao recente módulo Sofia2-DataFlow uma funcionalidade adicional para simplificar a passagem para Ontologias Sofia2.

Um Sink que permite guardar os objetos JSON do stream em ontologias Sofia2 utilizando o API REST do SIB (permite definir e avaliar regras e alarmes sobre o tráfego recebido pelo stream e aplicar igualmente toda a segurança e validações de Sofia2).

E 2 transformers para trocar um string com base numa expressão regular e para ajudar na gestão de JSONs.

 

  • Resolução de incidências e pequenas melhorias na utilização da Plataforma

 

DISPONÍVEL A VERSÃO 2.24.0 de SOFIA2

Actualización del visor de scripts

Con la nueva release se ha actualizado el editor del motor de scripting. Además del cambio de tema del editor, se remarcan las palabras clave de cada lenguaje, lo cual resulta muy práctico ahora que se pueden realizar scripts en groovy, python y R.

Algunos de los comandos y atajos del teclado más útiles son:

Modo Pantalla Completa – Coloque el cursor en el área de texto y pulse la tecla "F11" o "Esc" para cambiar o salir del ""modo de pantalla completa".

Selección múltiple – Mantenga presionada la tecla Ctrl / Cmd mientras selecciona para obtener múltiples selecciones.

Selección rectangular . Mantenga pulsada la tecla Alt para seleccionar un bloque de columnas alineadas de texto.

Ctrl + Z – Deshacer el cambio anterior

Ctrl + Y -Rehacer

Ctrl + F – Buscar

Ctrl + G – Buscar siguiente

Shift + Ctrl + G – Encuentra anterior

Shift + Ctrl + F – Reemplazar (Ejecutar este después de buscar)

Shift + Ctrl + R – Reemplazar todo (Ejecutar este después de buscar)

Para más información http://codemirror.net/doc/manual.html#commands

Actualización del visor de scripts

Actualizada API ARDUINO de SOFIA2

Se ha actualizado la API de Arduino con las librerías de la versión 1.6.5.
Se puede descargar  aquí

Las características actuales son:

  • Mantiene el protocolo Mqtt V3.1 para la conexión con el broker Moquette.
  • Ahora está preparado para poder trabajar con placas wifi como Wifi Shield, con encriptación WPA2 personal o WEP.
  • También puede trabajar vía Ethernet.
  • Está probado con una placa Arduino Mega 2560 y un Arduino Wifi Shield.

Se ha añadido un ejemplo actualizado con los datos de conexión de Sofia2 para realizar las pruebas. El ejemplo contiene los pasos a seguir para realizar una comunicación con el broker de Sofia2.

Estos serían los datos de conexión:
dominio : sofia2.com
puerto: 1883

Trazas del ejemplo:

-new Loop-
Connected to network
PubSubClient MQTT_CONNECTED
-Insert message-
{&amp;amp;quot;data&amp;amp;quot;:&amp;amp;quot;{'Sensor':{'measure':11}}&amp;amp;quot;,&amp;amp;quot;query&amp;amp;quot;:&amp;amp;quot;&amp;amp;quot;}
-Response:-
{&amp;amp;quot;data&amp;amp;quot;:&amp;amp;quot;{\&amp;amp;quot;_id\&amp;amp;quot;:ObjectId(\&amp;amp;quot;569fa70ce4b06ca65d2c4f89\&amp;amp;quot;)}&amp;amp;quot;,&amp;amp;quot;error&amp;amp;quot;:null,&amp;amp;quot;errorCode&amp;amp;quot;:null,&amp;amp;quot;ok&amp;amp;quot;:true}
-End of Loop-

Captura del mensaje almacenado en la ontología :

Actualizada API ARDUINO de SOFIA2

Nuevo Gadget Shiny R

Continuando con la evolución de los Gadgets/Dashboards en la plataforma, en la última release, se ha añadido un nuevo tipo de Gadget denominado Shiny R. Este Gadget, está basado en el potente lenguaje analítico R, a través del framework de Shiny.

Shiny es capaz de construir aplicaciones Web a través de código en R ejecutado en un servidor. Permite, de forma muy sencilla vía scripts de R, crear visualizaciones HTML5 con librerías Javascript muy potentes, como D3, GoogleCharts, mapas de Leaflet… También, como capacidad natural de R, es posible importar librerías disponibles en el repositorio del CRAN para permitir hacer una analítica profunda sobre los datos.

Para crear un nuevo Gadget Shiny R, lo primero que debemos hacer es situarnos en el menú de la consola para crear los mismos:

Una vez dentro nos encontramos con la siguiente pantalla:

Tenemos varias secciones en la pantalla sobre las que podemos incluir información:

· Nombre del Gadget

· ui.R -> En esta sección incluiremos el código de R Shiny encargado de la interfaz del gadget, es decir, la parte que genera todo el HTML, estilos y javascript.

· server.R -> En esta sección se incluirá el código de R Shiny, correspondiente a la parte servidor de Gadget.

· Archivos WWW -> Mediante Drag & Drop se podrán incluir archivos en esta sección, que serán utilizados por el Gadget, principalmente orientados a la parte de interfaz incluyendo hojas de estilos, librerías javascript o contenidos multimedia.

Para facilitar la tarea de programar al usuario los scripts de R, se ha incluido un editor de texto avanzado, el cual permite entre otras, varias opciones como:

· Selección por columnas de texto manteniendo pulsada la tecla Alt.

· Edición en pantalla completa: F11

· Búsqueda de palabras Ctrl + F

· Coloreado de palabras clave, cierre de llaves…

El archivo ui.R tendrá que tener siempre la misma estructura:


library(shiny)

# Define UI for application

shinyUI(

#UI CODE

)

Pasa lo mismo con el server.R:


library(shiny)

# Define server logic

shinyServer(function(input, output) {

#SERVER CODE

})

Usando el tutorial 1 de shiny http://shiny.rstudio.com/tutorial/lesson1/ tenemos los dos archivos que quedarían:

ui.R


library(shiny)

# Define UI for application that draws a histogram

shinyUI(fluidPage(

# Application title

titlePanel(&quot;Hello Shiny!&quot;),

# Sidebar with a slider input for the number of bins

sidebarLayout(

sidebarPanel(

sliderInput(&quot;bins&quot;,

&quot;Number of bins:&quot;,

min = 1,

max = 50,

value = 30)

),

# Show a plot of the generated distribution

mainPanel(

plotOutput(&quot;distPlot&quot;)

)

)

)) 

server.R:


library(shiny)

# Define server logic required to draw a histogram

shinyServer(function(input, output) {

# Expression that generates a histogram. The expression is

# wrapped in a call to renderPlot to indicate that:

#

# 1) It is &quot;reactive&quot; and therefore should re-execute automatically

# when inputs change

# 2) Its output type is a plot

output$distPlot &lt;- renderPlot({

x &lt;- faithful[, 2] # Old Faithful Geyser data

bins &lt;- seq(min(x), max(x), length.out = input$bins + 1)

# draw the histogram with the specified number of bins

hist(x, breaks = bins, col = 'darkgray', border = 'white')

})

}) 

Haciendo click en el botón Regenerar veremos el resultado de nuestro código en este Gadget:

Para poder interactuar con Sofia2, se puede incluir en el código de R la librería ApiSofia2R.R que posibilita la interacción con la plataforma de Gadget. Pudiendo llegar a Gadget tan complejos como pensemos y viendo resultados como los siguientes:

Nuevo Gadget Shiny R