Este artigo trata sobre Python Gateway, un proxecto comunitario de código aberto para a plataforma de datos InterSystems IRIS. Este proxecto permítelle orquestrar calquera algoritmo de aprendizaxe automática creado en Python (o ambiente principal para moitos científicos de datos), usar numerosas bibliotecas preparadas para crear rapidamente solucións de IA/ML analíticas e adaptativas na plataforma InterSystems IRIS. Neste artigo, mostrarei como InterSystems IRIS pode orquestrar procesos en Python, comunicar de forma eficiente datos bidireccionais e crear procesos comerciais intelixentes.
Planificar
Introdución.
Ferramentas.
Instalación
API.
Interoperabilidade.
Caderno Jupyter.
Conclusións.
Ligazóns.
MLToolkit.
Introdución
Python é unha linguaxe de programación de alto nivel e de propósito xeral destinada a mellorar a produtividade dos desenvolvedores e a lexibilidade do código. Nesta serie de artigos, falarei das posibilidades de usar Python na plataforma InterSystems IRIS, sendo o foco principal deste artigo o uso de Python como linguaxe para crear e executar modelos de aprendizaxe automática.
A aprendizaxe automática (ML) é unha clase de métodos de intelixencia artificial, cuxa característica non é a solución directa dun problema, senón a aprendizaxe no proceso de resolución de moitos problemas similares.
Os algoritmos e modelos de aprendizaxe automática son cada vez máis comúns. Hai moitas razóns para iso, pero todo se reduce á accesibilidade, á sinxeleza e á consecución de resultados prácticos. A agrupación ou mesmo o modelado de redes neuronais é unha nova tecnoloxía?
Por suposto que non, pero hoxe en día non hai necesidade de escribir centos de miles de liñas de código para executar un só modelo, e o custo de crear e utilizar modelos cada vez é menor.
As ferramentas están evolucionando: aínda que non dispoñemos de ferramentas de IA/ML totalmente centradas na GUI, o progreso que vimos con moitas outras clases de sistemas de información, como a BI (desde escribir código ata usar marcos e solucións configurables centradas na GUI), é tamén se observa nas ferramentas para crear AI/ML. Xa pasamos a fase de escritura de código e hoxe utilizamos frameworks para construír e adestrar modelos.
Outras melloras, como a posibilidade de distribuír un modelo adestrado previamente onde o usuario final simplemente ten que rematar de adestrar o modelo sobre os seus datos específicos, tamén facilitan o inicio da aprendizaxe automática. Estes avances fan que a aprendizaxe automática sexa moito máis sinxela tanto para os profesionais como para as empresas en xeral.
Por outra banda, cada vez estamos a recoller máis datos. Cunha plataforma de datos unificada como InterSystems IRIS, toda esta información pódese preparar inmediatamente e usar como entrada para modelos de aprendizaxe automática.
Co paso á nube, lanzar proxectos de IA/ML é máis fácil que nunca. Só podemos consumir os recursos que necesitamos. Ademais, grazas á paralelización que ofrecen as plataformas na nube, podemos aforrar tempo dedicado.
Pero que hai dos resultados? Aquí é onde as cousas se complican máis. Hai moitas ferramentas para construír modelos, que comentarei a continuación. Construír un bo modelo non é sinxelo, pero que segue? Obter un beneficio coa utilización dun modelo de negocio tamén é unha tarefa non trivial. A raíz do problema é a separación das cargas de traballo analíticas e transaccionais e os modelos de datos. Cando adestramos un modelo, adoitamos facelo con datos históricos. Pero o lugar para o modelo construído está no procesamento de datos transaccionais. De que serve o mellor modelo de detección de transaccións fraudulentas se o executamos unha vez ao día? Hai tempo que os estafadores marcharon cos cartos. Necesitamos adestrar o modelo en datos históricos, pero tamén hai que aplicalo en tempo real en novos datos entrantes para que os nosos procesos de negocio poidan actuar sobre as predicións realizadas polo modelo.
O Kit de ferramentas de ML é un conxunto de ferramentas que pretende facer precisamente iso: unificar modelos e un ambiente transaccional para que os modelos construídos poidan usarse facilmente directamente nos seus procesos de negocio. Python Gateway forma parte do ML Toolkit e ofrece integración coa linguaxe Python (semellante a como R Gateway, sendo parte do ML Toolkit, proporciona integración coa linguaxe R).
Kit de ferramentas
Antes de continuar, gustaríame describir algunhas ferramentas e bibliotecas de Python que usaremos máis tarde.
Tecnoloxía
Python é unha linguaxe de programación interpretada, de alto nivel e de propósito xeral. A principal vantaxe da linguaxe é a súa gran biblioteca de bibliotecas matemáticas, ML e AI. Do mesmo xeito que ObjectScript, é unha linguaxe orientada a obxectos, pero todo se define de forma dinámica e non estática. Ademais todo é un obxecto. Os artigos posteriores asumen unha familiaridade pasajera coa lingua. Se queres comezar a aprender, recoméndoche comezar por documentación.
IDE: Eu uso PyCharm, pero en xeral eles много. Se usas Atelier, hai un complemento Eclipse para desenvolvedores de Python. Se estás usando VS Code, hai unha extensión para Python.
Caderno: en lugar dun IDE, pode escribir e compartir os seus scripts en cadernos en liña. O máis popular deles é Xúpiter.
Bibliotecas
Aquí tes unha lista (non exhaustiva) de bibliotecas de aprendizaxe automática:
numpy — un paquete fundamental para cálculos precisos.
pandas — Estruturas de datos de alto rendemento e ferramentas de análise de datos.
As tecnoloxías de IA/ML fan que os negocios sexan máis eficientes e adaptables. Ademais, hoxe estas tecnoloxías son cada vez máis fáciles de desenvolver e implementar. Comeza a aprender sobre as tecnoloxías de IA/ML e como poden axudar a crecer a túa organización.
Instalación
Hai varias formas de instalar e usar Python Gateway:
SO
Windows
Linux
Mac
Estivador
Usa unha imaxe de DockerHub
Crea o teu propio look
Independentemente do método de instalación, necesitará o código fonte. O único lugar para descargar o código é páxina de lanzamentos. Contén versións estables probadas, só tes que tomar a máis recente. Polo momento é de 0.8, pero co paso do tempo haberá outras novas. Non clones/descargas o repositorio, descarga a última versión.
SO
Se está a instalar Python Gateway nun sistema operativo, primeiro (independentemente do sistema operativo) debe instalar Python. Para isto:
Descarga o código ObjectScript (i.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) a calquera área con produtos. No caso de que queira unha área existente para admitir produtos, execute: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
Lugar chamada DLL/SO/DYLIB á carpeta bin a súa instancia IRIS de InterSystems. O ficheiro da biblioteca debe estar dispoñible no camiño devolto write ##class(isc.py.Callout).GetLib().
Windows
Asegúrese de que a variable de ambiente PYTHONHOME apunta a Python 3.6.7.
Asegúrese de que a variable de ambiente do sistema é PATH contén unha variable PYTHONHOME (ou o directorio ao que apunta).
Linux (Debian/Ubuntu)
Comprobe que a variable de ambiente é PATH contén /usr/lib и /usr/lib/x86_64-linux-gnu. Usa o ficheiro /etc/environment para establecer variables de ambiente.
En caso de erros undefined symbol: _Py_TrueStruct establecer a configuración PythonLib... tamén en Léame hai unha sección Solución de problemas.
Mac
Actualmente só se admite Python 3.6.7 python.org. Comprobe a variable PATH.
Se cambiou as variables de ambiente, reinicie o seu produto InterSystems.
Estivador
O uso de recipientes ten unha serie de vantaxes:
Portabilidade
Eficacia
Illamento
Lixeireza
Inmutabilidade
Consulte isto serie de artigos para obter máis información sobre o uso de Docker con produtos InterSystems.
Actualmente, todas as compilacións de Python Gateway están baseadas en contedores 2019.4.
Imaxe lista
Executar: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestpara descargar e executar Python Gateway con InterSystems IRIS Community Edition. Iso é todo.
Crea o teu propio look
Para crear unha imaxe docker, execute na raíz do repositorio: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Por defecto, a imaxe está construída en función da imaxe store/intersystems/iris-community:2019.4.0.383.0, non obstante, pode cambialo configurando unha variable IMAGE.
Para compilar desde InterSystems IRIS, execute: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".
Se está a usar unha imaxe baseada en InterSystems IRIS Community Edition, pode omitir a clave.
Comentarios
Proceso de proba isc.py.test.Process garda unha serie de imaxes nun directorio temporal. Pode querer cambiar este camiño ao directorio montado. Para iso, edite a configuración WorkingDir especificando o directorio montado.
Para acceder ao terminal executa: docker exec -it irispy sh.
Acceso ao Portal de Xestión do Sistema mediante o inicio de sesión SuperUser/SYS.
Para deter o recipiente, execute: docker stop irispy && docker rm --force irispy.
Verificando a instalación
Unha vez instalado Python Gateway, paga a pena comprobar que funciona. Execute este código no terminal IRIS de InterSystems:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write var
O resultado debe ser: HELLO — Valor variable de Python x. Se o estado de retorno sc é un erro ou var baleiro, comprobar Léame - Sección de solución de problemas.
API
Python Gateway está instalado e comprobou que funciona. É hora de comezar a usalo!
A interface principal de Python é isc.py.Main. Ofrece os seguintes grupos de métodos (todos retornan %Status):
Execución de código
Transferencia de datos
Filial
Execución de código
Estes métodos permítenche executar código Python arbitrario.
SimpleString
SimpleString - Este é o método principal. Leva 4 argumentos opcionais:
code - liña de código para executar. Carácter de avance de liña: $c(10).
result — ByRef referencia á variable na que está escrito o valor returnVariable.
Enriba fixemos:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
Neste exemplo, asignamos a unha variable de Python x significado Hello e quere devolver o valor dunha variable de Python x a unha variable ObjectScript var.
ExecuteCode
ExecuteCode é unha alternativa máis segura e menos restritiva SimpleString.
As liñas da plataforma InterSystems IRIS están limitadas a 3 caracteres, e se queres executar unha peza de código máis longa, cómpre utilizar fíos.
Admítense dous argumentos:
code — unha liña ou fluxo de código Python que se vai executar.
variable — (opcional) asigna o resultado da execución code esta variable de Python.
Exemplo para usar:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").
Neste exemplo, multiplicamos 2 por 3 e escribimos o resultado nunha variable de Python y.
Transferencia de datos
Pasar datos a e desde Python.
Python -> InterSystems IRIS
Hai 4 formas de obter o valor dunha variable Python en InterSystems IRIS, dependendo da serialización que necesites:
String para tipos de datos sinxelos e depuración.
Repr para almacenar obxectos sinxelos e depurar.
JSON para facilitar a manipulación de datos no lado de InterSystems IRIS.
Pickle para gardar obxectos.
Estes métodos permítenche recuperar variables de Python como cadea ou fluxos.
GetVariable(variable, serialization, .stream, useString) - obter serialization variable variable в stream. Se useString é 1 e a serialización colócase nunha cadea, despois devólvese unha cadea e non un fluxo.
GetVariableJson(variable, .stream, useString) — obter a serialización JSON dunha variable.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6
InterSystems IRIS -> Python
Cargando datos de InterSystems IRIS en Python.
ExecuteQuery(query, variable, type, namespace) - crea un conxunto de datos (pandas dataframe ou list) da consulta sql e configúrao nunha variable de Python variable. Bolsa de plástico isc.py debe estar dispoñible na zona namespace - A solicitude executarase alí.
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - carga datos globais global do subíndice start para end en Python como unha variable de tipo type: list, ou pandas dataframe. Descrición de argumentos opcionais masklabels dispoñible na documentación da clase e no repositorio Documentos de transferencia de datos.
ExecuteClass(class, variable, type, start, end, properties, namespace) - carga datos de clase class dende id start para end en Python como unha variable de tipo type: list, ou pandas dataframe. properties — unha lista (separada por coma) das propiedades da clase que deben cargarse no conxunto de datos. Admite máscaras * и ?. predeterminado - * (todas as propiedades). Propiedade %%CLASSNAME ignorado.
ExecuteTable(table, variable, type, start, end, properties, namespace) - carga datos da táboa table dende id start para end en Python.
ExecuteQuery — universal (calquera consulta SQL correcta pasarase a Python). Non obstante, ExecuteGlobal e os seus envoltorios ExecuteClass и ExecuteTable traballar cunha serie de restricións. Son moito máis rápidos (3-5 veces máis rápido que o controlador ODBC e 20 veces máis rápido ExecuteQuery). Máis información en Documentos de transferencia de datos.
Todos estes métodos admiten a transferencia de datos desde calquera área. Bolsa de plástico isc.py debe estar dispoñible na zona de destino.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — transferir os resultados de calquera consulta SQL correcta a Python. Este é o método de transferencia de datos máis lento. Usalo se ExecuteGlobal e os seus envoltorios non están dispoñibles.
Argumentos:
query - consulta sql.
variable — o nome da variable Python na que se escriben os datos.
type - list ou Pandas dataframe.
namespace — Ámbito no que se executará a solicitude.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - pasar un global en Python.
Argumentos:
global - nome global sen ^
variable — o nome da variable Python na que se escriben os datos.
type - list ou Pandas dataframe.
start - o primeiro subíndice do global. Necesariamente %Integer.
end — o último subíndice do global. Necesariamente %Integer.
mask — Máscara de valor global. A máscara pode ser máis curta que o número de campos do global (neste caso omitiranse os campos ao final). Como formatar unha máscara:
+ pasar o valor tal e como está.
- saltar valor.
b — Tipo booleano (0 - False, todo o resto - True).
d — Data (de $horolog, en Windows desde 1970, en Linux desde 1900).
t — Tempo ($horolog, segundos despois da medianoite).
m — Selo de tempo (cadea de formato ANO-MES-DÍA HORA:MINUTO: SEGUNDO).
labels — % Lista de nomes de columnas. O primeiro elemento é o nome do subíndice.
namespace — Ámbito no que se executará a solicitude.
ExecuteClass
Envolver ExecuteGlobal. Baseándose na definición da clase, prepara unha convocatoria ExecuteGlobal e chámao.
ExecuteClass(class, variable, type, start, end, properties, namespace) - pasar datos de clase en Python.
Argumentos:
class - nome da clase
variable — o nome da variable Python na que se escriben os datos.
type - list ou Pandas dataframe.
start - ID inicial.
end - Id. final
properties — unha lista (separada por coma) das propiedades da clase que deben cargarse no conxunto de datos. Admite máscaras * и ?. predeterminado - * (todas as propiedades). Propiedade %%CLASSNAME ignorado.
namespace — Ámbito no que se executará a solicitude.
Todas as propiedades pásanse como están, excepto as propiedades de tipo %Date, %Time, %Boolean и %TimeStamp - convértense nas correspondentes clases de Python.
Executar táboa
Envolver ExecuteClass. Traduce o nome da táboa ao nome da clase e chama ExecuteClass. Sinatura:
ExecuteTable(table, variable, type, start, end, properties, namespace) - pasar datos da táboa a Python.
Argumentos:
table - nome da táboa.
Todos os demais argumentos pásanse como están a ExecuteClass.
Notas
ExecuteGlobal, ExecuteClass и ExecuteTable traballar igual de rápido.
ExecuteGlobal 20 veces máis rápido que ExecuteQuery en conxuntos de datos grandes (tempo de transferencia > 0.01 segundos).
ExecuteGlobal, ExecuteClass и ExecuteTable traballar en globais con esta estrutura: ^global(key) = $lb(prop1, prop2, ..., propN) onde key - un número enteiro.
Para ExecuteGlobal, ExecuteClass и ExecuteTable rango de valores admitidos %Date corresponde ao rango mktime e depende do sistema operativo (Windows: 1970-01-01, Linux 1900-01-01, Mac). Use %TimeStamppara transferir datos fóra deste intervalo ou usar pandas dataframe porque esta é unha limitación só de lista.
Para ExecuteGlobal, ExecuteClass и ExecuteTable todos os argumentos agás a fonte de datos (global, clase ou táboa) e a variable son opcionais.
Exemplos
Clase de proba isc.py.test.Person contén un método que demostra todas as opcións de transferencia de datos:
set global = "isc.py.test.PersonD"
set class = "isc.py.test.Person"
set table = "isc_py_test.Person"
set query = "SELECT * FROM isc_py_test.Person"
// Общие аргументы
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Способ 0: ExecuteGlobal без аргументов
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Способ 1: ExecuteGlobal с аргументами
// При передаче глобала названия полей задаются вручную
// globalKey - название сабсткрипта
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask содержит на 1 элемент меньше чем labels потому что "globalKey" - название сабскипта
// Пропускаем %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Способ 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Способ 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Способ 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)
Chame ao método do ##class(isc.py.test.Person).Test() para ver como funcionan todos os métodos de transferencia de datos.
Métodos auxiliares
GetVariableInfo(variable, serialization, .defined, .type, .length) — obter información sobre a variable: se está definida, a súa clase e lonxitude de serialización.
GetVariableDefined(variable, .defined) — se a variable está definida.
GetVariableType(variable, .type) - Obter a clase da variable.
GetStatus() - obter e eliminar a última excepción do lado de Python.
GetModuleInfo(module, .imported, .alias) — obter a variable do módulo e importar o estado.
GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - Obter información sobre a función.
Interoperabilidade
Aprendeu a chamar a Python Gateway desde o terminal, agora imos comezar a usalo en produción. A base para interactuar con Python neste modo é isc.py.ens.Operation. Permítenos:
Executar código en Python
Gardar/Restaurar o contexto de Python
Cargar e recibir datos de Python
Basicamente, unha operación de Python é un envoltorio isc.py.Main. Operación isc.py.ens.Operation ofrece a capacidade de interactuar co proceso Python dos produtos InterSystems IRIS. Admítense cinco consultas:
isc.py.msg.ExecutionRequest para executar código Python. Devolucións isc.py.msg.ExecutionResponse co resultado da execución e os valores das variables solicitadas.
isc.py.msg.StreamExecutionRequest para executar código Python. Devolucións isc.py.msg.StreamExecutionResponse o resultado da execución e os valores das variables solicitadas. Analóxico isc.py.msg.ExecutionRequest, pero acepta e devolve fluxos en lugar de cadeas.
isc.py.msg.QueryRequest para transmitir o resultado da execución dunha consulta SQL. Devolucións Ens.Response.
isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest para pasar datos globais/clase/táboa. Devolucións Ens.Response.
isc.py.msg.SaveRequest para gardar o contexto de Python. Devolucións Ens.StringResponse con ID de contexto.
isc.py.msg.RestoreRequest para restaurar o contexto de Python.
Ademais, isc.py.ens.Operation ten dúas opcións:
Initializer — seleccionar unha clase que implemente a interface isc.py.init.Abstract. Pódese usar para cargar funcións, módulos, clases, etc. É executado unha vez cando se inicia o proceso.
PythonLib - (só Linux) se ves erros ao cargar, establece o seu valor en libpython3.6m.so ou mesmo no camiño completo á biblioteca de Python.
Creación de procesos de negocio
Hai dúas clases dispoñibles que facilitan o desenvolvemento dos procesos de negocio:
isc.py.ens.ProcessUtils permite extraer anotacións de actividades con substitución de variables.
isc.py.util.BPEmulator facilita probar procesos de negocio con Python. Pode executar un proceso de negocio (partes de Python) no proceso actual.
Substitución de variables
Todos os procesos de negocio herdados isc.py.ens.ProcessUtils, pode usar o método GetAnnotation(name) para obter o valor da anotación da actividade polo seu nome. A anotación da actividade pode conter variables que se calcularán no lado de InterSystems IRIS antes de pasar a Python. Aquí está a sintaxe para a substitución de variables:
${class:method:arg1:...:argN} - chamada de método
#{expr} — executar código en linguaxe ObjectScript.
Un exemplo está dispoñible no proceso empresarial de proba isc.py.test.Process, por exemplo, na actividade Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Neste exemplo:
#{process.WorkDirectory} devolve a propiedade WorkDirectory do obxecto process, que é unha instancia da clase isc.py.test.Process aqueles. proceso de negocio actual.
${%PopulateUtils:Integer:1:100} chama un método Integer clase %PopulateUtils, pasando argumentos 1 и 100, devolvendo un enteiro aleatorio no intervalo 1...100.
Proba o proceso de negocio
Os produtos de proba e os procesos comerciais de proba están dispoñibles por defecto como parte do Python Gateway. Para usalos:
No terminal do sistema operativo, executa: pip install pandas matplotlib seaborn.
No terminal IRIS de InterSystems, execute: do ##class(isc.py.test.CannibalizationData).Import() para cubrir os datos da proba.
Lanzamento de produtos isc.py.test.Production.
Enviar tipo de solicitude Ens.Request в isc.py.test.Process.
A ver como funciona todo xunto. Aberto isc.py.test.Process no editor BPL:
Execución de código
O reto máis importante é executar código Python:
Consulta utilizada isc.py.msg.ExecutionRequest, aquí están as súas propiedades:
Code - Código Python.
SeparateLines — se debe dividir o código en liñas para a súa execución. $c(10) (n) úsase para separar cadeas. Teña en conta que NON se recomenda procesar a mensaxe completa á vez, esta función só está destinada a procesar def e expresións multiliñas similares. Por defecto 0.
Variables — unha lista de variables separadas por comas que se engadirán á resposta.
Serialization — Como serializar as variables que queremos devolver. Opcións: Str, Repr, JSON, Pickle и Dill, por defecto Str.
No noso caso, só establecemos a propiedade Code, polo que todas as demais propiedades usan os valores predeterminados. Fixémolo chamando process.GetAnnotation("Import pandas"), que en tempo de execución devolve unha anotación despois de realizar a substitución de variables. Despois de todo, o código import pandas as pd pasará a Python. GetAnnotation pode ser útil para obter scripts de Python de varias liñas, pero non hai restricións para este método para obter código. Podes configurar a propiedade Code de calquera forma conveniente para vostede.
Obtención de variables
Outro reto interesante usando isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:
Calcula a Matriz de Correlación no lado de Python e extrae a variable corrmat volver a InterSystems IRIS en formato JSON configurando as propiedades da solicitude:
Variables: "corrmat"
Serialization: "JSON"
Podemos ver os resultados en Visual Trace:
E se necesitamos este valor no BP, podemos obtelo así: callresponse.Variables.GetAt("corrmat").
Transferencia de datos
A continuación, imos falar sobre a transferencia de datos de InterSystems IRIS a Python; todas as solicitudes de transferencia de datos implementan a interface isc.py.msg.DataRequestque proporciona as seguintes propiedades:
Variable — unha variable de Python na que se escriben os datos.
Type - Tipo de variable: dataframe (frame de datos pandas) ou list.
Namespace — a zona da que recibimos os datos. Bolsa de plástico isc.py debería estar dispoñible nesta zona. Esta pode ser unha zona sen soporte para o produto.
Con base nesta interface, impléntanse 4 clases de solicitudes:
isc.py.msg.QueryRequest - establecer a propiedade Query para enviar unha consulta SQL.
isc.py.msg.ClassRequest - establecer a propiedade Class para pasar datos de clase.
isc.py.msg.TableRequest - Establecer a propiedade Table para transferir datos da táboa.
isc.py.msg.GlobalRequest - Establecer a propiedade Global para transferencia global de datos.
No proceso de proba, observa a actividade RAWonde isc.py.msg.QueryRequest mostrado en acción.
Gardando/Restaurando o contexto de Python
Finalmente, podemos gardar o contexto de Python en InterSystems IRIS, para iso enviarémolo isc.py.msg.SaveRequest con argumentos:
Mask — Só se gardan as variables que coincidan coa máscara. Soportado * и ?. Un exemplo: "Data*, Figure?"... Por defecto *.
MaxLength — A lonxitude máxima da variable almacenada. Se a serialización dunha variable é máis longa, ignorarase. Establécese en 0 para obter variables de calquera lonxitude. Por defecto $$$MaxStringLength.
Name — Nome do contexto (opcional).
Description — Descrición do contexto (opcional).
Devolucións Ens.StringResponse с Id contexto gardado. No proceso de proba, observa a actividade Save Context.
Solicitude relacionada isc.py.msg.RestoreRequest carga contexto de InterSystems IRIS en Python:
ContextId - identificador de contexto.
Clear — Limpar o contexto antes de restaurar.
Caderno Jupyter
Caderno Jupyter é unha aplicación web de código aberto que permite crear e publicar cadernos que conteñan código, visualizacións e texto. Python Gateway permítelle ver e editar procesos BPL en forma de Jupyter Notebook. Teña en conta que o executor normal de Python 3 úsase actualmente.
Esta extensión asume que as anotacións conteñen código Python e usa nomes de actividade como títulos anteriores. Agora é posible desenvolver procesos de negocio PythonGateway en Jupyter Notebook. Aquí tes o que é posible:
MLToolkit é un conxunto de ferramentas cuxo obxectivo é combinar modelos e un ambiente transaccional para que os modelos construídos se poidan usar facilmente directamente nos seus procesos de negocio. Python Gateway forma parte de MLToolkit e ofrece integración coa linguaxe Python, o que lle permite orquestrar calquera algoritmo de aprendizaxe automática creado en Python (o ambiente principal para moitos científicos de datos), utilizar numerosas bibliotecas preparadas para crear rapidamente IA analítica adaptativa e robótica. Solucións de ML na plataforma InterSystems IRIS.
O grupo de usuarios MLToolkit é un repositorio privado de GitHub creado como parte da organización GitHub corporativa de InterSystems. Está destinado a usuarios externos que instalan, aprenden ou xa están utilizando compoñentes de MLToolkit, incluído o Python Gateway. O grupo ten unha serie de casos implementados (con código fonte e datos de proba) nos campos de mercadotecnia, fabricación, medicina e moitas outras industrias. Para unirse ao grupo de usuarios de ML Toolkit, envíe un breve correo electrónico ao seguinte enderezo: [protexido por correo electrónico] e inclúa a seguinte información na súa carta:
Nome de usuario de GitHub
Organización (traballas ou estudas)
Posición (a túa posición real na túa organización, "Estudante" ou "Independiente").
País
Para aqueles que leron o artigo e estean interesados nas capacidades de InterSystems IRIS como plataforma para desenvolver ou hospedar intelixencia artificial e motores de aprendizaxe automática, invitámosche a discutir posibles escenarios que sexan de interese para a túa empresa. Estaremos encantados de analizar as necesidades da súa empresa e determinar conxuntamente un plan de acción; Enderezo de correo electrónico de contacto do noso equipo de expertos en IA/ML: [protexido por correo electrónico].