Python Gateway in InterSystems IRIS

Questu articulu hè nantu à Python Gateway, un prughjettu di a cumunità open source per a piattaforma di dati InterSystems IRIS. Stu prughjettu vi permette di orchestrate qualsiasi algoritmi di apprendimentu automaticu creati in Python (l'ambiente principale per parechji Data Scientists), aduprate numerose biblioteche pronte per creà rapidamente soluzioni AI / ML analitiche robotiche adattive in a piattaforma InterSystems IRIS. In questu articulu, vi mustrarà cumu InterSystems IRIS pò orchestrate prucessi in Python, cumunicà in modu efficiente e dati bidirezionali, è creà prucessi di cummerciale intelligenti.

Pianu

  1. Introduzione.
  2. Strumenti.
  3. Stallazione.
  4. API.
  5. Interoperabilità.
  6. Jupyter Notebook.
  7. Cunclusioni.
  8. Ligami.
  9. MLToolkit.

Introduzione

Python hè un linguaghju di prugrammazione d'altu livellu, di scopu generale, destinatu à migliurà a produtividade di u sviluppatore è a leggibilità di u codice. In questa serie di articuli, discuteraghju e pussibilità di utilizà Python nantu à a piattaforma InterSystems IRIS, cù l'enfasi principale di questu articulu hè l'usu di Python cum'è una lingua per creà è eseguisce mudelli di machine learning.

Machine learning (ML) hè una classa di metudi di intelligenza artificiale, a caratteristica di quale ùn hè micca a suluzione diretta di un prublema, ma l'apprendimentu in u prucessu di risolve parechji prublemi simili.

L'algoritmi è i mudelli di apprendimentu di machine sò diventati più cumuni. Ci hè parechje ragiuni per questu, ma tuttu si riduce à l'accessibilità, a simplicità è à ottene risultati pratichi. Hè u clustering o ancu u mudellu di rete neurale una nova tecnulugia?

Di sicuru, micca, ma oghje ùn ci hè micca bisognu di scrive centinaie di millaie di linee di codice per eseguisce un mudellu unicu, è u costu di creà è aduprà mudelli hè diventatu menu in menu.

L'arnesi sò in evoluzione - mentre ùn avemu micca strumenti AI / ML cumpletamente GUI-centric, u prugressu chì avemu vistu cù parechje altre classi di sistemi d'infurmazione, cum'è BI (da scrive codice à utilizà frameworks è soluzioni configurabili GUI-centric), hè osservatu ancu in i strumenti per creà AI/ML. Avemu digià passatu u stadiu di scrittura di codice è oghje usemu frameworks per custruisce è furmà mudelli.

Altre migliure, cum'è a capacità di distribuisce un mudellu pre-addestratu induve l'utente finale hà solu per finisce a furmazione di u mudellu nantu à i so dati specifichi, facenu ancu più faciule per inizià cù l'apprendimentu di macchina. Questi avanzati facenu l'apprendimentu di a macchina assai più faciule per i prufessiunali è per l'imprese in generale.

Per d 'altra banda, avemu a cullizzioni di più è più dati. Cù una piattaforma di dati unificata cum'è InterSystems IRIS, tutte queste informazioni ponu esse immediatamente preparate è aduprate cum'è input à mudelli di apprendimentu machine.

Cù u muvimentu in u nuvulu, lanciari prughjetti AI / ML hè diventatu più faciule ch'è mai. Pudemu solu cunsumà e risorse chì avemu bisognu. Inoltre, grazia à a parallelizazione offerta da e plataforme di nuvola, pudemu risparmià u tempu passatu.

Ma chì ne di i risultati? Questu hè induve e cose diventanu più complicate. Ci hè parechje strumenti per custruisce mudelli, chì discuteraghju dopu. Custruì un bonu mudellu ùn hè micca faciule, ma chì dopu? Fà un prufittu da l'usu di un mudellu di cummerciale hè ancu un compitu micca trivial. A radica di u prublema hè a separazione di carichi di travagliu analiticu è transazionale, è mudelli di dati. Quandu avemu furmà un mudellu, di solitu facemu nantu à dati storichi. Ma u locu per u mudellu custruitu hè in u prucessu di dati transazzione. Chì bonu hè u megliu mudellu di rilevazione di transazzione fraudulenta se l'eseguimu una volta à ghjornu? I scammers sò longu partutu cù i soldi. Avemu bisognu di furmà u mudellu nantu à e dati storichi, ma avemu ancu bisognu di applicà in tempu reale nantu à e novi dati entranti per chì i nostri prucessi di cummerciale ponu agisce nantu à e predizioni fatte da u mudellu.

U ML Toolkit hè un inseme d'arnesi chì hà u scopu di fà cusì: unificà mudelli è un ambiente transazzione per chì i mudelli custruiti ponu esse facilmente utilizati direttamente in i vostri prucessi di cummerciale. Python Gateway hè parte di u ML Toolkit è furnisce integrazione cù a lingua Python (simili à cumu R Gateway, essendu parte di u ML Toolkit furnisce integrazione cù a lingua R).

Strumenti

Prima di cuntinuà, mi piacerebbe discrive uni pochi di arnesi è biblioteche Python chì useremu dopu.

di tecnulugia

  • Python hè una lingua di prugrammazione interpretata, d'altu livellu, di scopu generale. U vantaghju principali di a lingua hè a so grande biblioteca di biblioteche matematiche, ML è AI. Cum'è ObjectScript, hè una lingua orientata à l'ughjettu, ma tuttu hè definitu dinamicamente piuttostu cà staticu. Inoltre tuttu hè un ughjettu. L'articuli più tardi assumenu una familiarità passendu cù a lingua. Se vulete principià à amparà, vi cunsigliu di principià cù ducumentazione.
  • Per i nostri esercizii successivi, settate Python 3.6.7 64 bit.
  • IDE: Aghju utilizatu PyCharm, ma in generale elli много. Se utilizate Atelier, ci hè un plugin Eclipse per i sviluppatori Python. Sè vo aduprate VS Code, ci hè una estensione per Python.
  • Notebook: Invece di un IDE, pudete scrive è sparte i vostri scripts in quaderni in linea. U più populari di elli hè Ghjove.

Bibliuteche

Eccu una lista (non exhaustiva) di biblioteche di machine learning:

  • Novu - un pacchettu fundamentale per calculi precisi.
  • Pandas - strutture di dati d'altu rendiment è strumenti di analisi di dati.
  • matplotlib - creazione di grafici.
  • Natu di mare - visualizazione di dati basata nantu à matplotlib.
  • Sklearn - metudi di machine learning.
  • XGBoost - algoritmi di apprendimentu automaticu in u quadru di a metodulugia di spinta di gradiente.
  • Gensim - PNL.
  • Keras - rete neurale.
  • flussu tensoru - una piattaforma per creà mudelli di machine learning.
  • PyTorch hè una piattaforma per creà mudelli di machine learning, cuncintrati in Python.
  • Nyoka - PMML da parechji mudelli.

E tecnulugia AI / ML facenu l'affari più efficienti è adattabili. Inoltre, oghje sti tecnulugii sò diventati più faciuli di sviluppà è implementà. Cumincià à amparà nantu à e tecnulugia AI / ML è cumu ponu aiutà a vostra urganizazione à cresce.

rimarchevuli

Ci hè parechje manere di installà è aduprà Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Aduprate una maghjina da DockerHub
    • Crea u vostru propiu sguardu

Indipendentemente da u metudu di stallazione, avete bisognu di u codice fonte. L'unicu locu per scaricà u codice hè pagina libera. Contene versioni stabili testate, basta piglià l'ultime. À u mumentu hè 0.8, ma cù u tempu ci saranu novi. Ùn clone micca / scaricate u repository, scaricate l'ultima versione.

OS

Sè site installatu Python Gateway in un sistema operatore, allora prima (indipendentemente da u sistema operatore) avete bisognu di installà Python. Per questu:

  1. Installa Python 3.6.7 64 bit. Hè cunsigliatu di stallà Python in u cartulare predeterminatu.
  2. Installa u modulu dill: pip install dill.
  3. Scaricate u codice ObjectScript (i.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) à ogni zona cù prudutti. In casu chì vulete una zona esistente per sustene i prudutti, eseguite: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Place callout DLL/SO/DYLIB à u cartulare bin a vostra istanza InterSystems IRIS. U schedariu di a biblioteca deve esse dispunibule in a strada tornata write ##class(isc.py.Callout).GetLib().

Windows

  1. Assicuratevi chì a variabile ambientale PYTHONHOME punta à Python 3.6.7.
  2. Assicuratevi chì a variabile di l'ambiente di u sistema hè PATH cuntene una variabile PYTHONHOME (o u repertoriu chì indica).

Linux (Debian/Ubuntu)

  1. Verificate chì a variabile ambientale hè PATH cuntene /usr/lib и /usr/lib/x86_64-linux-gnu. Utilizà u schedariu /etc/environment per stabilisce e variabili di l'ambiente.
  2. In casu di errore undefined symbol: _Py_TrueStruct stabilisce u paràmetru PythonLib. ancu in Léame ci hè una rùbbrica Troubleshooting.

Mac

  1. Attualmente solu Python 3.6.7 hè supportatu python.org. Verificate a variabile PATH.

Se avete cambiatu variabili di l'ambiente, riavvia u vostru pruduttu InterSystems.

Docker

L'usu di cuntenituri hà parechji vantaghji:

  • Portabilità
  • Eficiticità
  • Isulamentu
  • Leggerezza
  • Immutabilità

Verificate questu serie di articuli per più infurmazione nantu à l'usu di Docker cù i prudutti InterSystems.

Tutte e custruzzioni di Python Gateway sò attualmente basate in container 2019.4.

Immagine pronta

Corri: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestper scaricà è eseguisce Python Gateway cù InterSystems IRIS Community Edition. Eccu tuttu.

Crea u vostru propiu sguardu

Per custruisce una maghjina docker, eseguite in a radica di u repositoriu: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Per automaticamente, l'imaghjini hè custruitu basatu annantu à l'imaghjini store/intersystems/iris-community:2019.4.0.383.0, in ogni modu, pudete cambià questu per stabilisce una variabile IMAGE.
Per custruisce da InterSystems IRIS, eseguite: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Dopu questu, pudete eseguisce l'imagine docker:

docker run -d 
  -p 52773:52773 
  -v /<HOST-DIR-WITH-iris.key>/:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

Sè vo aduprate una maghjina basata in InterSystems IRIS Community Edition, pudete omette a chjave.

Comments

  • Prucessu di prova isc.py.test.Process salva una quantità di imagine in un repertoriu tempurale. Pudete vulete cambià sta strada à u cartulare muntatu. Per fà questu, edità u paràmetru WorkingDir specificà u cartulare muntatu.
  • Per accede à u terminal run: docker exec -it irispy sh.
  • Accessu à u Portal di Gestione di u Sistema per login SuperUser/SYS.
  • Per piantà u cuntinuu, eseguite: docker stop irispy && docker rm --force irispy.

Verificà a stallazione

Una volta installatu Python Gateway, vale a pena di verificà chì funziona. Eseguite stu codice in u terminal InterSystems IRIS:

set sc = ##class(isc.py.Callout).Setup() 
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write var

U risultatu deve esse: HELLO - Valore variabile Python x. Se u statu di ritornu sc hè un errore o var viotu, verificate Readme - Sezione di risoluzione di i prublemi.

API

Python Gateway hè stallatu è avete verificatu chì funziona. Hè ora di cumincià à aduprà!
L'interfaccia principale di Python hè isc.py.Main. Offre i seguenti gruppi di metudi (tutti tornanu %Status):

  • Esecuzione di codice
  • Trasferimentu di dati
  • A filiera

Esecuzione di codice

Questi metudi permettenu di eseguisce codice Python arbitrariu.

SimpleString

SimpleString - questu hè u metudu principale. Ci vole 4 argumenti opzionali:

  • code - linea di codice per eseguisce. Caractère d'avance de ligne : $c(10).
  • returnVariable - nome di a variàbile à vultà.
  • serialization - cumu si serializza returnVariable. 0 - stringa (default), 1 - repr.
  • result - ByRef riferenza à a variàbile in quale u valore hè scrittu returnVariable.

Sopra avemu fattu:

set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).

In questu esempiu, assignemu à una variabile Python x valore Hello è vulete vultà u valore di una variabile Python x à una variabile ObjectScript var.

ExecuteCode

ExecuteCode hè una alternativa più sicura è menu restrittiva SimpleString.
I linii in a piattaforma InterSystems IRIS sò limitati à 3 caratteri, è se vulete eseguisce un pezzu più longu di codice, avete bisognu di utilizà filamenti.
Dui argumenti sò accettati:

  • code - una linea o flussu di codice Python per esse eseguitu.
  • variable - (facultativu) assigna u risultatu di l'esekzione code sta variabile Python.

Esempiu à aduprà:

set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").

In questu esempiu, multiplichemu 2 per 3 è scrivite u risultatu à una variable Python y.

Trasferimentu di dati

Passa dati da è da Python.

Python -> InterSystems IRIS

Ci hè 4 modi per uttene u valore di una variabile Python in InterSystems IRIS, secondu a serializazione chì avete bisognu:

  • String per tippi di dati simplici è debugging.
  • Repr per almacenà oggetti simplici è debugging.
  • JSON per una manipulazione faciule di dati da u latu InterSystems IRIS.
  • Pickle per salvà l'uggetti.

Questi metudi permettenu di ricuperà variabili da Python cum'è una stringa o flussi.

  • GetVariable(variable, serialization, .stream, useString) - uttene serialization variabile variable в stream... Sì useString hè 1 è a serializazione hè posta nantu à una stringa, dopu una stringa hè tornata è micca un flussu.
  • GetVariableJson(variable, .stream, useString) - uttene a serializazione JSON di una variabile.
  • GetVariablePickle(variable, .stream, useString, useDill) -get Pickle (o Dill) serialization di una variàbbili.

Pruvemu di piglià a nostra variabile y.

set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6

InterSystems IRIS -> Python

Caricamentu di dati da InterSystems IRIS in Python.

  • ExecuteQuery(query, variable, type, namespace) - crea un set di dati (pandas dataframe o list) da a query sql è a mette in una variabile Python variable. Saccu di plastica isc.py deve esse dispunibule in a zona namespace - a dumanda serà eseguita quì.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - carica dati globali global da l'indice start à end in Python cum'è una variabile di tipu type: list, o panda dataframe. Descrizzione di l'argumenti opzionali mask e labels dispunibule in a documentazione di a classe è u repository Documenti di trasferimentu di dati.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - carica dati di classi class da id start à end in Python cum'è una variabile di tipu type: list, o panda dataframe. properties - una lista (separata da virgola) di e proprietà di classi chì deve esse caricate in u settore di dati. Maschere supportate * и ?. Default - * (tutte i pruprietà). Pruprietà %%CLASSNAME ignoratu.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - carica i dati di a tabella table da id start à end in Python.

ExecuteQuery - universale (qualsiasi dumanda SQL curretta serà passata à Python). Tuttavia, ExecuteGlobal è i so involucri ExecuteClass и ExecuteTable travaglià cù una quantità di restrizioni. Sò assai più veloci (3-5 volte più veloce di u driver ODBC è 20 volte più veloce ExecuteQuery). Più infurmazione à Documenti di trasferimentu di dati.
Tutti issi metudi sustegnu trasferimentu dati da ogni zona. Saccu di plastica isc.py deve esse dispunibule in l'area di destinazione.

Eseguite Query

ExecuteQuery(request, variable, type, namespace) - trasferendu i risultati di qualsiasi dumanda SQL curretta à Python. Questu hè u metudu di trasferimentu di dati più lento. Aduprà si ExecuteGlobal è i so wrappers ùn sò micca dispunibili.

Argumenti:

  • query - dumanda sql.
  • variable - u nome di a variabile Python in quale sò scritte i dati.
  • type - list o Pandas dataframe.
  • namespace - l'area induve a dumanda serà eseguita.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - passendu un globale in Python.

Argumenti:

  • global - nomu glubale senza ^
  • variable - u nome di a variabile Python in quale sò scritte i dati.
  • type - list o Pandas dataframe.
  • start - u primu indice di u glubale. Necessariamente %Integer.
  • end - l'ultimu indice di u glubale. Necessariamente %Integer.
  • mask - maschera di valore globale. A maschera pò esse più corta di u numeru di campi in u glubale (in quale casu i campi à a fine seranu saltati). Cumu furmà una maschera:
    • + passa u valore cum'è hè.
    • - saltà u valore.
    • b - tipu booleanu (0 - False, tuttu u restu - True).
    • d - Data (da $horolog, Windows da 1970, Linux da 1900).
    • t - Tempu ($horologu, sicondi dopu à mezanotte).
    • m — Timestamp (stringa di furmatu ANNU-MESI-DAY HOUR:MINUTE:SECOND).
  • labels - % Lista di nomi di colonna. U primu elementu hè u nome di u subscript.
  • namespace - l'area induve a dumanda serà eseguita.

ExecuteClass

Avvolgi sopra ExecuteGlobal. Basatu nantu à a definizione di classa, prepara una chjama ExecuteGlobal è u chjama.

ExecuteClass(class, variable, type, start, end, properties, namespace) - passanu dati di classi in Python.

Argumenti:

  • class - nome di a classa
  • variable - u nome di a variabile Python in quale sò scritte i dati.
  • type - list o Pandas dataframe.
  • start - ID iniziale.
  • end - Id. finale
  • properties - una lista (separata da virgola) di e proprietà di classi chì deve esse caricate in u settore di dati. Maschere supportate * и ?. Default - * (tutte i pruprietà). Pruprietà %%CLASSNAME ignoratu.
  • namespace - l'area induve a dumanda serà eseguita.

Tutte e pruprietà sò passate cum'è, eccettu e proprietà di tipu %Date, %Time, %Boolean и %TimeStamp - sò cunvertiti in e classi Python currispundenti.

ExecuteTable

Avvolgi sopra ExecuteClass. Traduce u nome di a tavola in u nome di a classe è chjama ExecuteClass. Signature :

ExecuteTable(table, variable, type, start, end, properties, namespace) - Passendu i dati di a tabella à Python.

Argumenti:

  • table - nome di a tavola.
    Tutti l'altri argumenti sò passati cum'è ExecuteClass.

Note

  • ExecuteGlobal, ExecuteClass и ExecuteTable travaglià ugualmente veloce.
  • ExecuteGlobal 20 volte più veloce chè ExecuteQuery nantu à grande setti di dati (tempu di trasferimentu> 0.01 seconde).
  • ExecuteGlobal, ExecuteClass и ExecuteTable travaglià nantu à i globals cù sta struttura: ^global(key) = $lb(prop1, prop2, ..., propN) induve key - un interu.
  • di ExecuteGlobal, ExecuteClass и ExecuteTable gamma di valori supportata %Date currisponde à a gamma mktime è dipende da u SO (finestri: 1970-01-01, Linux 1900-01-01, M mac). Aduprà %TimeStampa trasfiriri dati fora di sta gamma o aduprà panda dataframe perchè questu hè una limitazione solu di lista.
  • di ExecuteGlobal, ExecuteClass и ExecuteTable tutti l'argumenti eccettu a fonte di dati (globale, classa o tavula) è a variàbile sò opzionali.

esempi

Classe di prova isc.py.test.Persona cuntene un metudu chì mostra tutte l'opzioni di trasferimentu di dati:

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)

Chjamate u metudu do ##class(isc.py.test.Person).Test() per vede cumu tutti i metudi di trasferimentu di dati travaglianu.

I metudi d'aiutu

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - uttene infurmazione nantu à a variàbile: s'ellu hè definitu, a so classa è a durata di serializazione.
  • GetVariableDefined(variable, .defined) - se a variàbile hè definita.
  • GetVariableType(variable, .type) - uttene a classa di a variabile.
  • GetStatus() - uttene è sguassate l'ultima eccezione da u latu di Python.
  • GetModuleInfo(module, .imported, .alias) - uttene a variabile di u modulu è u statu d'importazione.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - uttene infurmazione nantu à a funzione.

Interoperabilità

Avete amparatu à chjamà Python Gateway da u terminal, avà cuminciamu à aduprà in a produzzione. A basa per interagisce cù Python in questu modu hè isc.py.ens.Operation. Ci permette:

  • Eseguite u codice in Python
  • Salvà / Risturà u cuntestu Python
  • Caricate è riceve dati da Python

In fondu, una operazione Python hè un wrapper sopra isc.py.Main. Operazione isc.py.ens.Operation furnisce a capacità di interagisce cù u prucessu Python da i prudutti InterSystems IRIS. Cinque dumande sò supportate:

  • isc.py.msg.ExecutionRequest per eseguisce u codice Python. Ritorna isc.py.msg.ExecutionResponse cù u risultatu di l'esekzione è i valori di e variabili dumandate.
  • isc.py.msg.StreamExecutionRequest per eseguisce u codice Python. Ritorna isc.py.msg.StreamExecutionResponse u risultatu di l'esekzione è i valori di e variabili dumandate. Analogicu isc.py.msg.ExecutionRequest, ma accetta è torna flussi invece di stringhe.
  • isc.py.msg.QueryRequest per trasmette u risultatu di eseguisce una query SQL. Ritorna Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest per passà dati globale / classi / table. Ritorna Ens.Response.
  • isc.py.msg.SaveRequest per salvà u cuntestu Python. Ritorna Ens.StringResponse cù ID di cuntestu.
  • isc.py.msg.RestoreRequest per restaurà u cuntestu Python.

    Inoltre, isc.py.ens.Operation hà dui paràmetri:

    • Initializer - selezziunate una classa chì implementa l'interfaccia isc.py.init.Abstract. Pò esse usatu per carricà funzioni, moduli, classi, etc. Hè eseguitu una volta quandu u prucessu principia.
    • PythonLib - (Solu Linux) se vede l'errore durante a carica, stabilisce u so valore à libpython3.6m.so o ancu in u percorsu sanu à a biblioteca di Python.

Creazione di prucessi cummerciale

Ci sò dui classi dispunibuli chì facilitanu u sviluppu di i prucessi di cummerciale:

  • isc.py.ens.ProcessUtils permette di caccià l'annotazioni da l'attività cù a sustituzione variabile.
  • isc.py.util.BPEmulator facilita a prova di prucessi di cummerciale cù Python. Pò eseguisce un prucessu cummerciale (parti Python) in u prucessu attuale.

Sustituzione Variabile

Tutti i prucessi di cummerciale ereditati da isc.py.ens.ProcessUtils, pò aduprà u metudu GetAnnotation(name) pè ottene u valore di l'annotazione di l'attività cù u so nome. L'annotazione di l'attività pò cuntene variabili chì saranu calculati nantu à u latu InterSystems IRIS prima di esse passati à Python. Eccu a sintassi per a sustituzione variabile:

  • ${class:method:arg1:...:argN} - metudu chjama
  • #{expr} - eseguisce codice in lingua ObjectScript.

Un esempiu hè dispunibule in u prucessu cummerciale di prova isc.py.test.Process, per esempiu, in attività Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). In questu esempiu:

  • #{process.WorkDirectory} torna a pruprietà WorkDirectory di l'ughjettu process, chì hè un esempiu di a classe isc.py.test.Process quelli. prucessu di cummerciale attuale.
  • ${%PopulateUtils:Integer:1:100} chjama un metudu Integer класса %PopulateUtils, passendu argumenti 1 и 100, riturnendu un interu aleatoriu in u intervallu 1...100.

Pruvate u prucessu cummerciale

Prudutti di prova è prucessi di cummerciale di prova sò dispunibuli per difettu cum'è parte di u Python Gateway. Per aduprà:

  1. In u terminal OS, eseguite: pip install pandas matplotlib seaborn.
  2. In u terminal InterSystems IRIS, eseguite: do ##class(isc.py.test.CannibalizationData).Import() per riempie i dati di prova.
  3. Lanciari i prudutti isc.py.test.Production.
  4. Mandate u tipu di dumanda Ens.Request в isc.py.test.Process.

Videmu cumu si travaglia tuttu inseme. Apertu isc.py.test.Process in l'editore BPL:

Python Gateway in InterSystems IRIS

Esecuzione di codice

A sfida più impurtante hè di eseguisce codice Python:

Python Gateway in InterSystems IRIS

Query usatu isc.py.msg.ExecutionRequest, eccu e so proprietà:

  • Code - codice Python.
  • SeparateLines - se dividite u codice in linee per l'esekzione. $c(10) (n) hè utilizatu per separà e corde. Per piacè nutate chì ùn hè micca cunsigliatu per processà tuttu u missaghju in una volta, sta funzione hè solu destinata à processà def è espressioni multiline simili. Default 0.
  • Variables - una lista separata da virgula di variàbili chì serà aghjuntu à a risposta.
  • Serialization - Cumu serializzà e variàbili chì vulemu vultà. Opzioni: Str, Repr, JSON, Pickle и Dill, default Str.

In u nostru casu, avemu stabilitu solu a pruprietà Code, cusì tutte l'altri pruprietà utilizanu i valori predeterminati. L'avemu stabilitu chjamendu process.GetAnnotation("Import pandas"), chì in runtime torna una annotazione dopu chì a sostituzione variabile hè stata realizata. Dopu tuttu, u codice import pandas as pd serà passatu à Python. GetAnnotation pò esse utile per ottene script Python multi-linea, ma ùn ci sò micca restrizioni à stu metudu di ottene u codice. Pudete stabilisce a pruprietà Code in ogni modu convenientu per voi.

Ottene Variabili

Un altru sfida interessante à aduprà isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway in InterSystems IRIS

Calcula a Matrice di Correlazione in u latu di Python è estrae a variabile corrmat torna à InterSystems IRIS in u formatu JSON stabilendu e proprietà di dumanda:

  • Variables: "corrmat"
  • Serialization: "JSON"

Pudemu vede i risultati in Visual Trace:

Python Gateway in InterSystems IRIS

È se avemu bisognu di stu valore in u BP, pudemu ottene cusì: callresponse.Variables.GetAt("corrmat").

Trasferimentu di dati

Dopu, parlemu di u trasferimentu di dati da InterSystems IRIS à Python; tutte e richieste di trasferimentu di dati implementanu l'interfaccia isc.py.msg.DataRequestchì furnisce e seguenti proprietà:

  • Variable - una variabile Python in quale sò scritti dati.
  • Type - tipu variabile: dataframe (pandas dataframe) o list.
  • Namespace - l'area da quale ricevemu dati. Saccu di plastica isc.py duverebbe esse dispunibule in questa zona. Questu pò esse un spaziu senza supportu di produttu.

Basatu nantu à sta interfaccia, 4 classi di richieste sò implementate:

  • isc.py.msg.QueryRequest - stabilisce a pruprietà Query per mandà una dumanda SQL.
  • isc.py.msg.ClassRequest - stabilisce a pruprietà Class per passà dati di classi.
  • isc.py.msg.TableRequest - stabilisce a pruprietà Table per trasfiriri dati di tavula.
  • isc.py.msg.GlobalRequest - stabilisce a pruprietà Global per u trasferimentu globale di dati.

In u prucessu di prova, fighjate l'attività RAWinduve isc.py.msg.QueryRequest mostratu in azzione.

Python Gateway in InterSystems IRIS

Salvà / Risturà u Cuntestu Python

Infine, pudemu salvà u cuntestu Python in InterSystems IRIS, per fà questu avemu da mandà isc.py.msg.SaveRequest cù argumenti:

  • Mask - Solu i variabili chì currispondenu à a maschera sò salvati. Supportatu * и ?. Un esempiu: "Data*, Figure?"... Default *.
  • MaxLength - A durata massima di a variabile almacenata. Se a serializazione di una variabile hè più longa, serà ignorata. Pone à 0 per uttene variabili di ogni lunghezza. Default $$$MaxStringLength.
  • Name - Nome di u cuntestu (opcional).
  • Description — Descrizzione di u cuntestu (opcional).

Ritorna Ens.StringResponse с Id cuntestu salvatu. In u prucessu di prova, fighjate l'attività Save Context.

Richiesta in relazione isc.py.msg.RestoreRequest carica u cuntestu da InterSystems IRIS in Python:

  • ContextId - identificatore di u cuntestu.
  • Clear - sguassate u cuntestu prima di restaurà.

Notebook Jupyter

Notebook Jupyter hè una applicazione web open source chì permette di creà è publicà libretti chì cuntenenu codice, visualizazioni è testu. Python Gateway permette di vede è edità i prucessi BPL in a forma di un Jupyter Notebook. Per piacè nutate chì l'esecutore normale di Python 3 hè attualmente utilizatu.

Questa estensione assume chì l'annotazioni cuntenenu codice Python è usa nomi di attività cum'è tituli precedenti. Avà hè pussibule di sviluppà i prucessi di cummerciale PythonGateway in Jupyter Notebook. Eccu ciò chì hè pussibule:

  • Crea novi prucessi di cummerciale
  • Elimina i prucessi di cummerciale
  • Crea novi attività
  • Cambia attività
  • Elimina attività

quì video demo. È uni pochi di screenshots:

Process Explorer

Python Gateway in InterSystems IRIS

Editore di prucessu

Python Gateway in InterSystems IRIS

rimarchevuli

  1. Avete bisognu di InterSystems IRIS 2019.2+.
  2. Installa PythonGateway v0.8+ (solu necessariu isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Aghjurnate u codice ObjectScript da u repository.
  4. Esecutà do ##class(isc.py.util.Jupyter).Install() è seguitate i cunsiglii.

Documentazione.

scuperti

MLToolkit hè un inseme di strumenti chì u scopu hè di cumminà mudelli è un ambiente transazionale per chì i mudelli custruiti ponu esse facilmente utilizati direttamente in i vostri prucessi di cummerciale. Python Gateway face parte di MLToolkit è furnisce l'integrazione cù a lingua Python, chì vi permette di orchestrate qualsiasi algoritmi di apprendimentu automaticu creati in Python (l'ambiente principale per parechji Data Scientists), aduprate numerose biblioteche pronte per creà rapidamente IA analitica adattativa è robotica / Soluzioni ML nantu à a piattaforma InterSystems IRIS.

referenze

MLToolkit

U gruppu d'utilizatori MLToolkit hè un repository GitHub privatu creatu cum'è parte di l'urganizazione corporativa di InterSystems GitHub. Hè destinatu à l'utilizatori esterni chì installanu, amparanu o chì utilizanu digià cumpunenti MLToolkit, cumpresu u Python Gateway. U gruppu hà una quantità di casi implementati (cù codice fonte è dati di teste) in i campi di u marketing, a fabricazione, a medicina è parechje altre industrii. Per unisce à u Gruppu d'Utenti di ML Toolkit, mandate un brevi email à l'indirizzu seguente: [email prutettu] è include l'infurmazioni seguenti in a vostra lettera:

  • nome d'utilizatore GitHub
  • Organizazione (travagliate o studiate)
  • Posizione (a vostra pusizioni attuale in a vostra urganizazione, o "Studente" o "Indipendenti").
  • paese

Per quelli chì anu lettu l'articulu è sò interessati à e capacità di InterSystems IRIS cum'è una piattaforma per u sviluppu o l'ospitu di l'intelligenza artificiale è i motori d'apprendimentu automaticu, vi invitemu à discutiri scenarii pussibuli chì sò d'interessu per a vostra impresa. Saremu felici di analizà i bisogni di a vostra cumpagnia è di stabilisce un pianu d'azzione; Indirizzu email di cuntattu di a nostra squadra di esperti AI/ML - [email prutettu].

Source: www.habr.com

Add a comment