Python Gateway i InterSystems IRIS

O lenei tusiga e uiga i le Python Gateway, o se faʻalapotopotoga faʻalapotopotoga faʻapitoa mo le InterSystems IRIS faʻamaumauga faʻamaumauga. O lenei poloketi e mafai ai e oe ona faʻatulagaina soʻo se masini aʻoaʻoga algorithms na faia i le Python (o le siosiomaga autu mo le tele o Saienitisi Faʻamatalaga), faʻaaoga le tele o faletusi ua saunia e faʻavavevave ai faʻataʻitaʻiga, robotic analytical AI / ML solutions i luga o le InterSystems IRIS platform. I totonu o lenei tusiga, o le a ou faʻaalia le auala e mafai ai e le InterSystems IRIS ona faʻatulagaina faiga i le Python, faʻafesoʻotaʻi lelei faʻamatalaga e lua-auala, ma fatuina faiga pisinisi atamai.

Fuafuaga

  1. Faatomuaga.
  2. Meafaigaluega.
  3. Faʻatulagaga
  4. API.
  5. Felagolagomai.
  6. Jupyter Notebook.
  7. Faaiuga.
  8. So'oga.
  9. MLTToolkit.

Faatomuaga

O le Python o se gagana fa'apolokalame maualuga, fa'amoemoe lautele e fa'atatau i le fa'aleleia atili o le gaosiga o le atina'e ma le mafai ona faitau tulafono. I lenei faasologa o tala, o le a ou talanoaina le avanoa e faʻaaoga ai le Python i luga o le InterSystems IRIS platform, faʻatasi ai ma le autu autu o lenei tusiga o le faʻaaogaina o le Python o se gagana mo le fatuina ma le faʻaogaina o masini aʻoaʻoga faʻataʻitaʻiga.

O le aʻoaʻoina o masini (ML) o se vasega o metotia faʻapitoa, o le uiga faʻapitoa e le o se fofo tuusaʻo o se faʻafitauli, ae o le aʻoaʻoina i le faagasologa o le foia o le tele o faʻafitauli tutusa.

Algoritimi a'oa'oga masini ma fa'ata'ita'iga ua fa'ateleina. E tele mafuaʻaga mo lenei mea, ae o mea uma e oʻo mai i le faʻaogaina, faigofie ma le ausia o taunuʻuga aoga. O fa'apipi'i po'o feso'ota'iga neural fa'ata'ita'iga ose tekonolosi fou?

Ioe e leai, ae o aso nei e le manaʻomia le tusia o le fiaselau afe o laina code e faʻatautaia ai se faʻataʻitaʻiga se tasi, ma o le tau o le fatuina ma le faʻaogaina o faʻataʻitaʻiga ua faʻaitiitia ma faʻaitiitia.

Meafaigaluega o loʻo faʻaleleia - e ui e le o atoatoa a matou GUI-centric AI / ML meafaigaluega, o le alualu i luma ua matou vaʻaia ma le tele o isi vasega o faʻamatalaga faʻamatalaga, e pei o le BI (mai le tusitusi code i le faʻaogaina o faʻavaʻa ma GUI-centric configurable solutions), o na matauina foi i meafaigaluega mo le fatuina o AI / ML. Ua uma ona matou pasia le laasaga o le tusitusi code ma o aso nei matou te faʻaogaina faʻavae e fausia ma faʻataʻitaʻi faʻataʻitaʻiga.

O isi faʻaleleia, e pei o le mafai ona faʻasoa se faʻataʻitaʻiga aʻo leʻi aʻoaʻoina lea e naʻo le faʻaaogaina e le tagata faʻauʻu e faʻamaeʻa le aʻoaʻoina o le faʻataʻitaʻiga i luga o latou faʻamatalaga patino, faʻafaigofie foi ona amata ile aʻoaʻoga masini. O nei aga'i i luma ua fa'afaigofieina ai le a'oa'oina o masini a'oa'oga mo fa'apolofesa ma kamupani lautele.

I le isi itu, o loʻo matou aoina atili ma sili atu faʻamatalaga. Faatasi ai ma se faʻamaumauga tuʻufaʻatasia e pei o InterSystems IRIS, o nei faʻamatalaga uma e mafai ona vave saunia ma faʻaoga e fai ma faʻaoga i faʻataʻitaʻiga aʻoaʻoga masini.

Faatasi ai ma le siitia atu i le ao, o le faʻalauiloaina o poloketi AI / ML ua sili atu ona faigofie nai lo se isi lava taimi. E mafai ona tatou faʻaaogaina na o punaoa tatou te manaʻomia. E le gata i lea, faʻafetai i le parallelization ofo mai e cloud platforms, e mafai ona tatou faʻasaoina taimi faʻaalu.

Ae faapefea iʻuga? O le mea lea e atili ai ona faigata. E tele meafaigaluega mo le fausiaina o faʻataʻitaʻiga, lea o le a ou talanoaina i le isi. O le fausiaina o se faʻataʻitaʻiga lelei e le faigofie, ae o le a le isi mea? O le mauaina o se tupe mama mai le faʻaaogaina o se faʻataʻitaʻiga pisinisi o se galuega e le taua. O le aʻa o le faʻafitauli o le tuʻufaʻatasia lea o galuega suʻesuʻe ma fefaʻatauaʻiga, ma faʻataʻitaʻiga faʻamaumauga. A matou toleniina se faʻataʻitaʻiga, e masani ona matou faia i luga o faʻamaumauga faʻasolopito. Ae o le nofoaga mo le faʻataʻitaʻiga fausia o loʻo i totonu o fefaʻatauaiga faʻamatalaga faʻamatalaga. O le a le lelei o le faʻataʻitaʻiga sili ona lelei e suʻesuʻeina fefaʻatauaiga taufaasese pe afai tatou te taʻavale tasi i le aso? Ua leva ona o ese le au taufaavalea ma le tupe. Matou te manaʻomia le aʻoaʻoina o le faʻataʻitaʻiga i luga o faʻamaumauga faʻasolopito, ae e manaʻomia foʻi ona faʻaaogaina i le taimi moni i luga o faʻamatalaga fou o loʻo oʻo mai ina ia mafai ai e a matou pisinisi faʻagasologa ona galue i luga o faʻamatalaga na faia e le faʻataʻitaʻiga.

O le ML Toolkit o se seti o meafaigaluega e faʻamoemoe e fai naʻo lena: tuʻufaʻatasia faʻataʻitaʻiga ma se siosiomaga fefaʻatauaʻiga ina ia faigofie ona faʻaoga saʻo faʻataʻitaʻiga i au faiga pisinisi. Python Gateway o se vaega o le ML Toolkit ma tuʻuina atu le tuʻufaʻatasia ma le gagana Python (e tutusa ma le auala R Gateway, o se vaega o le ML Toolkit e maua ai le tuʻufaʻatasia ma le gagana R).

Meafaigaluega

Ae tatou te leʻi faʻaauau, ou te manaʻo e faʻamatala ni nai mea faigaluega Python ma faletusi o le a tatou faʻaaogaina mulimuli ane.

o tekinolosi

  • O le Python o se gagana fa'alauiloa, maualuga, fa'amoemoe lautele. Ole aoga tele ole gagana ole faletusi tele ole numera, ML ma AI faletusi. E pei o le ObjectScript, o se gagana e faʻatatau i mea, ae o mea uma e faʻamalamalamaina ma le malosi nai lo le faʻatulagaina. E le gata i lea, o mea uma lava o se mea. O tala mulimuli ane o loʻo faʻapea o se masani masani i le gagana. Afai e te manaʻo e amata aʻoaʻo, ou te fautuaina e amata i fa'amaumauga.
  • Mo a tatou faʻamalositino mulimuli ane, seti Python 3.6.7 64 bit.
  • IDE: Ou te faʻaaogaina PyCharm, ae i se tulaga lautele latou много. Afai e te faʻaaogaina Atelier, o loʻo i ai se Eclipse plugin mo Python developers. Afai o loʻo e faʻaogaina le VS Code, o loʻo i ai se faʻaopoopoga mo Python.
  • Notebook: Nai lo le IDE, e mafai ona e tusi ma fa'asoa au tusitusiga i api i luga ole laiga. O le sili ona lauiloa o latou jupyter.

Potutusi

Ole lisi lenei (e le'i uma) o faletusi a'oa'oga masini:

  • Mafaia - o se afifi faavae mo fa'atatau tonu.
  • panda - faʻatulagaina faʻamaumauga maualuga ma mea faigaluega suʻesuʻe faʻamaumauga.
  • matplotlib - faia o kalafi.
  • fuatai - faʻamatalaga faʻamatalaga faʻavae ile matplotlib.
  • Sklearn - metotia aʻoaʻoga masini.
  • XGBoost - masini aʻoaʻoga algorithms i totonu o le faʻavae o le faʻaleleia o le faʻasolosolo auala.
  • Gensim - NLP.
  • Keras - neural networks.
  • tafega tensor - o se faʻavae mo le fatuina o faʻataʻitaʻiga aʻoaʻoga masini.
  • PyTorch o se faʻavae mo le fatuina o faʻataʻitaʻiga aʻoaʻoga masini, faʻatatau ile Python.
  • Nyoka - PMML mai faʻataʻitaʻiga eseese.

O tekinolosi AI/ML e fa'aleleia atili ai pisinisi ma fa'afetaui. E le gata i lea, i aso nei o nei tekinolosi ua amata ona faigofie ona atiaʻe ma faʻatinoina. Amata a'oa'o e uiga i tekonolosi AI/ML ma pe fa'apefea ona latou fesoasoani i lau fa'alapotopotoga e fa'atupulaia.

faatulagaga

E tele auala e faʻapipiʻi ai ma faʻaoga le Python Gateway:

  • OS
    • pupuni
    • Linux
    • Mac
  • Docker
    • Fa'aoga se ata mai le DockerHub
    • Fausia lou lava foliga

E tusa lava po o le a le auala faʻapipiʻi, e te manaʻomia le code source. Pau lava le nofoaga e la'u mai ai le code itulau tatala. O lo'o i ai fa'amaumauga mautu fa'ata'ita'i, na'o le fa'afo'i mai. I le taimi nei e 0.8, ae i le aluga o taimi o le ai ai ni mea fou. Aua le clone/download le faleteuoloa, download le lomiga lata mai.

OS

Afai o loʻo e faʻapipiʻi le Python Gateway i luga o se faiga faʻaogaina, muamua (tusa lava po o le a le faiga faʻaoga) e te manaʻomia e faʻapipiʻi le Python. Mo lenei:

  1. Fa'apipi'i le Python 3.6.7 64 bit. E fautuaina e faʻapipiʻi le Python i le lisi faʻaletonu.
  2. Fa'apipi'i le module dill: pip install dill.
  3. La'u mai le ObjectScript code (ie. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) i so'o se vaega o lo'o iai oloa. Afai e te manaʻo i se vaega o loʻo i ai nei e lagolago ai oloa, taʻavale: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Nofoaga fa'ailoga DLL/SO/DYLIB i faila bin lau InterSystems IRIS faʻataʻitaʻiga. E tatau ona avanoa le faila o le faletusi i le ala na toe faafoi mai write ##class(isc.py.Callout).GetLib().

pupuni

  1. Ia mautinoa le fesuiaiga o le siosiomaga PYTHONHOME faasino ile Python 3.6.7.
  2. Ia mautinoa o le fesuiaiga o le siosiomaga o le system PATH e iai se fesuiaiga PYTHONHOME (poʻo le faʻatonuga o loʻo faasino i ai).

Linux (Debian/Ubuntu)

  1. Siaki pe o le fesuiaiga o le siosiomaga PATH aofia ai /usr/lib и /usr/lib/x86_64-linux-gnu. Fa'aaoga faila /etc/environment e seti ai fesuiaiga o le siosiomaga.
  2. I tulaga o mea sese undefined symbol: _Py_TrueStruct seti le faatulagaga PythonLib. foi i totonu Faitau o loʻo i ai se vaega Faʻafitauli.

Mac

  1. Ole taimi nei na'o le Python 3.6.7 o lo'o lagolagoina python.org. Siaki le fesuiaiga PATH.

Afai na e suia suiga ole siosiomaga, toe amata lau oloa InterSystems.

Docker

O le faʻaaogaina o pusa e iai le tele o mea lelei:

  • feaveai
  • Lelei
  • Faʻasalaga
  • Māmā
  • Le suia

Siaki lenei mea faasologa o tala mo nisi faʻamatalaga e uiga i le faʻaogaina o Docker ma InterSystems oloa.

O fale uma o le Python Gateway o loʻo faʻavae i le taimi nei 2019.4.

Ata ua saunia

tamoe: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:lateste sii mai ma fa'agaoioi le Python Gateway ma InterSystems IRIS Community Edition. Pau lava lena.

Fausia lou lava foliga

Ina ia fausia se ata faʻailoga, tamomoe i le aʻa o le fale teu oloa: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Ona o le faaletonu, o le ata e fausia e faavae i luga o le ata store/intersystems/iris-community:2019.4.0.383.0, peitaʻi e mafai ona e suia lenei mea e ala i le setiina o se fesuiaiga IMAGE.
Ina ia fausia mai le InterSystems IRIS, tamoe: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

A maeʻa lenei mea e mafai ona e faʻataʻitaʻiina le ata o le docker:

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

Afai o loʻo e faʻaogaina se ata e faʻavae i luga ole InterSystems IRIS Community Edition, e mafai ona e aveese le ki.

faamatalaga

  • Fa'agasologa o su'ega isc.py.test.Process fa'asaoina se numera o ata i se lisi le tumau. Atonu e te mana'o e sui le ala lea i le lisi fa'apipi'i. Ina ia faia lenei mea, teuteu le seti WorkingDir fa'amaonia le fa'atonuga fa'apipi'i.
  • Ina ia maua le ta'avale fa'amauina: docker exec -it irispy sh.
  • Avanoa ile System Management Portal ile saini SuperUser/SYS.
  • Ina ia taofi le koneteina, tamoe: docker stop irispy && docker rm --force irispy.

Fa'amaonia le fa'apipi'iina

A maeʻa ona e faʻapipiʻi le Python Gateway, e aoga le siakiina o loʻo galue. Fa'atino lenei tulafono ile InterSystems IRIS terminal:

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

O le taunuuga e tatau ona: HELLO — Python fesuiaiga tau x. Afai o le tulaga toe faafoi sc o se mea sese pe var gaogao, siaki Readme - Vaega fa'afitauli.

API

Python Gateway ua faʻapipiʻiina ma ua e faʻamaonia e aoga. Ua oʻo i le taimi e amata faʻaaoga ai!
Ole fa'aoga autu ile Python ole isc.py.Main. E ofoina atu vaega nei o metotia (toe foi uma %Status):

  • Fa'atinoina o Tulafono
  • Tuuina atu o faamatalaga
  • Ausilali

Fa'atinoina o Tulafono

O nei metotia e mafai ai e oe ona faʻatinoina le tulafono Python.

SimpleString

SimpleString - o le auala autu lea. E mana'omia ni finauga e 4 e filifili ai:

  • code — laina o code e faatino. Uiga fafaga laina: $c(10).
  • returnVariable - igoa o le fesuiaiga e toe foi mai.
  • serialization - fa'afefea ona fa'asologa returnVariable. 0 — manoa (valea), 1 — repr.
  • result - ByRef faʻasino i le fesuiaiga o loʻo tusia ai le tau returnVariable.

I luga na matou faia:

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

I lenei faʻataʻitaʻiga, matou te tofia i se fesuiaiga Python x uiga Hello ma manaʻo e toe faʻafoʻi le tau o se fesuiaiga Python x i se fesuiaiga ObjectScript var.

ExecuteCode

O le ExecuteCode o se mea e sili atu le saogalemu ma le fa'asao SimpleString.
O laina i totonu ole InterSystems IRIS platform e faʻatapulaʻaina ile 3 mataitusi, ma afai e te manaʻo e faʻatino se fasi code umi, e tatau ona e faʻaogaina filo.
E lua finauga e talia:

  • code - o se laina poʻo se vaitafe o le Python code e faʻatinoina.
  • variable - (filifiliga) e tuʻuina atu le iʻuga o le faʻataunuʻuina code lenei fesuiaiga Python.

Faataitaiga e faaaoga:

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

I lenei faʻataʻitaʻiga, matou te faʻateleina le 2 i le 3 ma tusi le taunuuga i se fesuiaiga Python y.

Tuuina atu o faamatalaga

Tu'u fa'amatalaga i ma mai le Python.

Python -> InterSystems IRIS

E 4 auala e maua ai le tau o se fesuiaiga Python i InterSystems IRIS, faʻatatau i le faasologa e te manaʻomia:

  • String mo ituaiga faʻamatalaga faigofie ma le debugging.
  • Repr mo le teuina o mea faigofie ma le debugging.
  • JSON mo faʻamatalaga faigofie faʻamatalaga i le itu InterSystems IRIS.
  • Pickle e laveai mea faitino.

O nei metotia e mafai ai e oe ona toe maua mai fesuiaiga mai le Python e pei o se manoa poʻo se vaitafe.

  • GetVariable(variable, serialization, .stream, useString) - maua serialization ma liuliuina variable в stream. Afai useString o le 1 ma o le serialization e tuu i luga o se manoa, ona toe faafoi mai lea o se manoa ae le o se vaitafe.
  • GetVariableJson(variable, .stream, useString) - maua JSON serialization o se fesuiaiga.
  • GetVariablePickle(variable, .stream, useString, useDill) -maua Pickle (po o Dill) serialization o se fesuiaiga.

Tatou taumafai e maua le tatou fesuiaiga y.

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

InterSystems IRIS -> Python

Tu'u fa'amaumauga mai le InterSystems IRIS ile Python.

  • ExecuteQuery(query, variable, type, namespace) - faia se fa'amaumauga (pandas dataframe poʻo list) mai le sql fesili ma seti i se fesuiaiga Python variable. taga palasitika isc.py e tatau ona avanoa i le eria namespace - o le a faia le talosaga iina.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - utaina fa'amaumauga o le lalolagi global mai le subscript start i end i le Python o se ituaiga fesuiaiga type: list, po o panda dataframe. Fa'amatalaga o finauga e filifili ai mask ma labels e maua i tusitusiga a le vasega ma fale teu oloa Fa'amatalaga Fa'aliliuga.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - utaina fa'amatalaga vasega class mai id start i end i le Python o se ituaiga fesuiaiga type: list, po o panda dataframe. properties - o se lisi (tuuese i le koma) o meatotino a le vasega e manaʻomia ona utaina i totonu o faʻamaumauga. Ua lagolagoina matapulepule * и ?. Fa'atonu - * (meatotino uma). Meatotino %%CLASSNAME le amanaia.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - utaina fa'amatalaga laulau table mai id start i end i le Python.

ExecuteQuery - lautele (so'o se fesili SQL sa'o o le a pasi atu i le Python). Peitai, ExecuteGlobal ma ona afifi ExecuteClass и ExecuteTable galue ma le tele o tapulaa. E sili atu le saoasaoa (3-5 taimi sili atu nai lo le avetaavale ODBC ma 20 taimi vave ExecuteQuery). Fa'amatalaga atili ile Fa'amatalaga Fa'aliliuga.
O nei metotia uma e lagolagoina le faʻaliliuina o faʻamatalaga mai soʻo se vaega. taga palasitika isc.py e tatau ona avanoa i totonu o le nofoaga e fa'atatau i ai.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - fa'aliliuina i'uga o so'o se fesili SQL sa'o ile Python. Ole auala sili lea ona fa'aliliuina fa'amatalaga. Fa'aaoga pe afai ExecuteGlobal ma e le o maua ona afifi.

finauga:

  • query - sql fesili.
  • variable - le igoa ole fesuiaiga Python lea o loʻo tusia ai faʻamatalaga.
  • type - list po o Pandas dataframe.
  • namespace - le vaega o le a faia ai le talosaga.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - pasia se lalolagi i le Python.

finauga:

  • global - igoa ole lalolagi e aunoa ma ^
  • variable - le igoa ole fesuiaiga Python lea o loʻo tusia ai faʻamatalaga.
  • type - list po o Pandas dataframe.
  • start - o le uluaʻi faʻamaumauga a le lalolagi. E tatau lava %Integer.
  • end - o le subscript mulimuli a le lalolagi. E tatau lava %Integer.
  • mask - ufimata taua o le lalolagi. O le ufimata e mafai ona puʻupuʻu nai lo le numera o fanua i le lalolagi atoa (o le mea lea o le a faʻafefe ai fanua i le pito). Fa'afefea ona fa'atulaga se matapulepule:
    • + pasi le tau e pei ona i ai.
    • - faamisi tau.
    • b — Ituaiga Boolean (0 - False, o totoe uma - True).
    • d — Aso (mai le $horolog, i luga o Windows mai le 1970, i luga o Linux mai le 1900).
    • t — Taimi ($horolog, sekone i le tulua o po).
    • m — Timestamp (faasologa o manoa YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
  • labels — %Lisi o igoa koluma. O le elemene muamua o le igoa o le subscript.
  • namespace - le vaega o le a faia ai le talosaga.

ExecuteClass

Afifi ExecuteGlobal. E faavae i le faauigaga a le vasega, saunia se valaau ExecuteGlobal ma valaau ia te ia.

ExecuteClass(class, variable, type, start, end, properties, namespace) - pasi fa'amatalaga vasega ile Python.

finauga:

  • class - igoa ole vasega
  • variable - le igoa ole fesuiaiga Python lea o loʻo tusia ai faʻamatalaga.
  • type - list po o Pandas dataframe.
  • start - ID amata.
  • end - mulimuli Id
  • properties - o se lisi (tuuese i le koma) o meatotino a le vasega e manaʻomia ona utaina i totonu o faʻamaumauga. Ua lagolagoina matapulepule * и ?. Fa'atonu - * (meatotino uma). Meatotino %%CLASSNAME le amanaia.
  • namespace - le vaega o le a faia ai le talosaga.

O meatotino uma e pasia e pei ona iai se'i vagana ai ituaiga meatotino %Date, %Time, %Boolean и %TimeStamp - ua liua i latou i vasega tutusa Python.

Fa'atino Laulau

Afifi ExecuteClass. Faaliliuina le igoa ole laulau ile igoa ole vasega ma valaau ExecuteClass. Saini:

ExecuteTable(table, variable, type, start, end, properties, namespace) - pasi fa'amatalaga laulau ile Python.

finauga:

  • table — igoa laulau.
    O isi finauga uma e pasia e pei ona i ai ExecuteClass.

Faamatalaga

  • ExecuteGlobal, ExecuteClass и ExecuteTable galue tutusa vave.
  • ExecuteGlobal 20 taimi sili atu nai lo ExecuteQuery i luga o faʻamaumauga tetele (taimi faʻaliliu> 0.01 sekone).
  • ExecuteGlobal, ExecuteClass и ExecuteTable galue i luga ole lalolagi ma lenei fausaga: ^global(key) = $lb(prop1, prop2, ..., propN) le mea key - se numera atoa.
  • mo ExecuteGlobal, ExecuteClass и ExecuteTable lagolagoina le tele o tau %Date e fetaui ma le lautele mktime ma faʻalagolago ile OS (faamalama: 1970-01-01, linux 1900-01-01, Mac). Fa'aoga %TimeStampe fesiita'i fa'amatalaga i fafo atu o lenei va'aiga po'o le fa'aogaina o fa'amatalaga pandas ona o se lisi-na'o tapulaa.
  • mo ExecuteGlobal, ExecuteClass и ExecuteTable o finauga uma se'i vagana le puna o fa'amatalaga (lalolagi, vasega po'o le laulau) ma le fesuiaiga e filifili.

faataitaiga

Vasega su'ega isc.py.test.Person o lo'o i ai se metotia e fa'aalia uma ai fa'aliliuga fa'amatalaga:

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)

Valaau le metotia do ##class(isc.py.test.Person).Test() e va'ai pe fa'afefea ona fa'aogaina auala uma e fa'aliliuina ai fa'amatalaga.

Auala Fesoasoani

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - maua faʻamatalaga e uiga i le fesuiaiga: pe faʻamatalaina, lona vasega ma le umi o le faasologa.
  • GetVariableDefined(variable, .defined) - pe fa'amatalaina le fesuiaiga.
  • GetVariableType(variable, .type) - maua le vasega o le fesuiaiga.
  • GetStatus() - maua ma aveese le tuusaunoaga mulimuli i le itu Python.
  • GetModuleInfo(module, .imported, .alias) - maua suiga module ma tulaga faaulufale mai.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - maua faʻamatalaga e uiga i le galuega.

Fesoʻotaʻiga

Ua e aʻoaʻoina pe faʻafefea ona valaʻau le Python Gateway mai le laina, ia tatou amata faʻaaoga i le gaosiga. O le faavae mo le fegalegaleai ma Python i lenei faiga o isc.py.ens.Operation. E mafai ai ona tatou:

  • Fa'atino le code ile Python
  • Fa'asao/ Toe fa'afo'i le fa'amatalaga Python
  • Tu'u ma maua fa'amatalaga mai le Python

Ole mea moni, ole ta'aloga Python ua fa'amalo isc.py.Main. Fa'agaioiga isc.py.ens.Operation e maua ai le tomai e fegalegaleai ai ma le Python process mai InterSystems IRIS oloa. E lima fesili e lagolagoina:

  • isc.py.msg.ExecutionRequest e faʻatino le code Python. Toe fo'i isc.py.msg.ExecutionResponse faʻatasi ai ma le faʻatinoga o le faʻataunuʻuina ma le tau o suiga ole talosaga.
  • isc.py.msg.StreamExecutionRequest e faʻatino le code Python. Toe fo'i isc.py.msg.StreamExecutionResponse le taunuʻuga o le faʻatinoga ma le tau o suiga ole talosaga. Analogue isc.py.msg.ExecutionRequest, ae talia ma toe faafoi vaitafe nai lo manoa.
  • isc.py.msg.QueryRequest e tuʻuina atu le iʻuga o le faʻatinoina o se fesili SQL. Toe fo'i Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest mo le pasia o faʻamatalaga faʻavaomalo / vasega / laulau. Toe fo'i Ens.Response.
  • isc.py.msg.SaveRequest e fa'asaoina le Python context. Toe fo'i Ens.StringResponse ma context ID.
  • isc.py.msg.RestoreRequest e toe faʻafoʻisia le Python context.

    I le faaopoopo atu, isc.py.ens.Operation e lua tulaga:

    • Initializer - filifilia o se vasega e faʻaaogaina le atinaʻe isc.py.init.Abstract. E mafai ona faʻaaogaina e utaina ai galuega, modules, vasega, ma isi. E fa'atino tasi pe a amata le fa'agasologa.
    • PythonLib - (Linux naʻo) pe a e vaʻai i mea sese pe a faʻapipiʻi, seti lona tau i libpython3.6m.so po'o le ala atoa i le faletusi Python.

Fausiaina o faiga pisinisi

E lua vasega avanoa e faafaigofie ai le atinaʻeina o faiga pisinisi:

  • isc.py.ens.ProcessUtils fa'atagaina oe e su'e fa'amatalaga mai fa'agaioiga fa'atasi ma suiga fesuisuia'i.
  • isc.py.util.BPEmulator fa'afaigofie ona fa'ata'ita'i faiga pisinisi ma le Python. E mafai ona faʻatinoina se pisinisi pisinisi (Python vaega) i le faagasologa o loʻo iai nei.

Suiga Suiga

O faiga pisinisi uma na tuufaasolo mai isc.py.ens.ProcessUtils, e mafai ona faʻaogaina le auala GetAnnotation(name) e maua ai le tau o fa'amatalaga gaioioiga i lona igoa. O le faʻamatalaga o gaioiga e mafai ona aofia ai fesuiaiga o le a faʻatatau ile itu InterSystems IRIS aʻo leʻi pasi atu ile Python. O le syntax lea mo suiga fesuisuiai:

  • ${class:method:arg1:...:argN} - auala valaau
  • #{expr} — fa'atino le fa'ailoga i le gagana ObjectScript.

O loʻo maua se faʻataʻitaʻiga i le suʻega pisinisi faʻagasologa isc.py.test.Process, mo se faʻataʻitaʻiga, i le gaioiga Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). I lenei fa'ata'ita'iga:

  • #{process.WorkDirectory} toe faafoi le meatotino WorkDirectory o le mea process, o se faataitaiga o le vasega isc.py.test.Process i latou. faiga pisinisi o iai nei.
  • ${%PopulateUtils:Integer:1:100} e taʻua se metotia Integer taʻiala %PopulateUtils, fefinaua'iga fe'avea'i 1 и 100, toe fa'afo'i se numera fa'afuase'i i le va'aiga 1...100.

Su'ega pisinisi fa'agasologa

O su'ega fa'ata'ita'iga ma su'ega pisinisi fa'agasologa o lo'o avanoa e ala i le fa'aletonu o se vaega o le Python Gateway. Ina ia faʻaaogaina:

  1. I le OS terminal, tamomoe: pip install pandas matplotlib seaborn.
  2. I le InterSystems IRIS terminal, tamoe: do ##class(isc.py.test.CannibalizationData).Import() e fa'atumu fa'amaumauga o su'ega.
  3. Fa'alauiloa oloa isc.py.test.Production.
  4. Auina atu ituaiga talosaga Ens.Request в isc.py.test.Process.

Sei o tatou vaai pe faapefea ona galulue faatasi. Tatala isc.py.test.Process i le faatonu o le BPL:

Python Gateway i InterSystems IRIS

Fa'atinoina o Tulafono

O le luʻitau sili ona taua o le faʻatinoina o le Python code:

Python Gateway i InterSystems IRIS

Fa'aaoga fesili isc.py.msg.ExecutionRequest, o ona meatotino nei:

  • Code — Code Python.
  • SeparateLines - pe vaevae le code i laina mo le faʻatinoina. $c(10) (n) e fa'aaogaina e vavae ese ai manoa. Fa'amolemole e le fautuaina e fa'agasolo le fe'au atoa i le taimi e tasi, o lenei galuega e na'o le fa'amoemoe e fa'agasolo def ma fa'aupuga tutusa laina tele. Fa'atonu 0.
  • Variables - o se lisi vavae-koma o fesuiaiga o le a faaopoopo i le tali.
  • Serialization - E faʻafefea ona faʻasalalau ia fesuiaiga tatou te mananaʻo e toe foʻi mai. Filifiliga: Str, Repr, JSON, Pickle и Dill, faaletonu Str.

I le matou tulaga, matou te setiina naʻo le fanua Code, o lea e fa'aaoga uma ai e isi meatotino le tau fa'aletonu. Matou te setiina e ala i le valaau process.GetAnnotation("Import pandas"), lea i le taimi fa'ata'avale e toe fa'afo'i mai ai se fa'amatalaga pe a mae'a ona fa'atino suiga fesuisuia'i. A uma, o le code import pandas as pd o le a pasi atu i le Python. GetAnnotation atonu e aoga mo le mauaina o le tele-line Python scripts, ae leai ni faʻatapulaʻaina i lenei auala e maua ai le code. E mafai ona e setiina le meatotino Code i soo se auala talafeagai mo oe.

Mauaina o Fesuiaiga

O le isi luitau manaia e faʻaaogaina isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway i InterSystems IRIS

E fa'atatau le Correlation Matrix i le pito o le Python ma aveese mai le fesuiaiga corrmat toe foʻi i InterSystems IRIS i le JSON format e ala i le setiina o meatotino talosaga:

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

E mafai ona tatou va'ai i'uga ile Visual Trace:

Python Gateway i InterSystems IRIS

Ma afai tatou te manaʻomia lenei tau ile BP, e mafai ona tatou maua faʻapenei: callresponse.Variables.GetAt("corrmat").

Tuuina atu o faamatalaga

Le isi, seʻi o tatou talanoa e uiga i le fesiitaiga o faʻamatalaga mai InterSystems IRIS i le Python; o talosaga uma mo le faʻaliliuina o faʻamatalaga e faʻaaogaina le atinaʻe isc.py.msg.DataRequestlea e maua ai meatotino nei:

  • Variable - o se fesuiaiga Python lea e tusia ai faʻamatalaga.
  • Type — ituaiga fesuia'i: dataframe (pandas dataframe) poʻo list.
  • Namespace — le vaega tatou te maua mai ai faamatalaga. taga palasitika isc.py e tatau ona avanoa i lenei vaega. Atonu o se vaega lea e leai se lagolago o oloa.

Faʻavae i luga o lenei atinaʻe, 4 vasega o talosaga e faʻatinoina:

  • isc.py.msg.QueryRequest - seti le meatotino Query e lafo se fesili SQL.
  • isc.py.msg.ClassRequest - seti le meatotino Class e pasi fa'amaumauga a le vasega.
  • isc.py.msg.TableRequest - seti meatotino Table e fa'aliliuina fa'amatalaga laulau.
  • isc.py.msg.GlobalRequest - seti meatotino Global mo le fesiitaiga o fa'amatalaga i le lalolagi.

I le faagasologa o le suʻega, vaʻai i le gaioiga RAWfea isc.py.msg.QueryRequest faaalia i faatinoga.

Python Gateway i InterSystems IRIS

Fa'asaoina/ Toe fa'afo'isia le Python Context

Ma le mea mulimuli, e mafai ona matou faʻasaoina le Python context i InterSystems IRIS, e fai lenei mea matou te lafoina isc.py.msg.SaveRequest ma finauga:

  • Mask — Na'o fesuiaiga e fetaui ma le matapulepule e faasaoina. Lagolagoina * и ?. O se faʻataʻitaʻiga: "Data*, Figure?". Fa'atonu *.
  • MaxLength - Le maualuga maualuga o le fesuiaiga o lo'o teuina. Afai e umi atu le faasologa o se fesuiaiga, o le a le amanaiaina. Seti i le 0 e maua ai fesuiaiga o soo se umi. Fa'atonu $$$MaxStringLength.
  • Name — Igoa o le talaaga (filifiliga).
  • Description - Fa'amatalaga o le fa'amatalaga (filifiliga).

Toe Foi Ens.StringResponse с Id fa'aola talatala. I le faagasologa o le suʻega, vaʻai i le gaioiga Save Context.

Talosaga fa'atatau isc.py.msg.RestoreRequest utaina faʻamatalaga mai InterSystems IRIS i le Python:

  • ContextId - fa'amatalaga fa'amatalaga.
  • Clear — fa'amama le tala a'o le'i toe fa'afo'isia.

Tusigāmanatu Jupyter

Tusigāmanatu Jupyter ose fa'aoga i luga ole laiga e mafai ai ona e faia ma lolomi api o lo'o iai fa'ailoga, fa'aaliga, ma tusitusiga. Python Gateway e mafai ai ona e vaʻai ma faʻasaʻo faiga BPL i foliga o le Jupyter Notebook. Faamolemole ia matau o le masani Python 3 executor o loʻo faʻaaogaina nei.

O lenei faʻaopoopoga e faʻapea o faʻamatalaga o loʻo i ai le Python code ma faʻaoga igoa o gaioiga e pei o ulutala muamua. Ua mafai nei ona atiaʻe faiga pisinisi PythonGateway i le Jupyter Notebook. O mea nei e mafai:

  • Fausia faiga pisinisi fou
  • Aveese faiga pisinisi
  • Fausia ni gaoioiga fou
  • Suia gaoioiga
  • Aveese gaoioiga

iinei ata vitio. Ma ni nai screenshots:

Process Explorer

Python Gateway i InterSystems IRIS

Fa'atonu fa'agasologa

Python Gateway i InterSystems IRIS

faatulagaga

  1. E te manaʻomia InterSystems IRIS 2019.2+.
  2. Fa'apipi'i le PythonGateway v0.8+ (na'o le mana'omia isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Fa'afou le ObjectScript code mai le fale teu oloa.
  4. Faʻatino do ##class(isc.py.util.Jupyter).Install() ma mulimuli i faatonuga.

Tusi.

sailiiliga

MLToolkit o se seti o meafaigaluega o lona sini o le tuʻufaʻatasia o faʻataʻitaʻiga ma se siosiomaga fefaʻatauaʻiga ina ia mafai ai ona faʻaoga saʻo faʻataʻitaʻiga faʻataʻitaʻi i au faiga pisinisi. Python Gateway o se vaega o le MLToolkit ma tuʻuina atu le tuʻufaʻatasia ma le gagana Python, e mafai ai ona e faʻatulagaina soʻo se masini aʻoaʻoga algorithms na faia i le Python (o le siosiomaga autu mo le tele o Saienitisi Faʻamatalaga), faʻaaoga le tele o faletusi ua saunia e faʻavave ai le faʻaogaina, robotic analytical AI / ML fofo ile InterSystems platform IRIS.

mau

MLTToolkit

Ole vaega ole tagata fa'aoga MLToolkit ose faleteuoloa GitHub tumaoti na fausia ose vaega ole fa'alapotopotoga a le InterSystems GitHub. E faʻamoemoe mo tagata faʻaoga fafo o loʻo faʻapipiʻi, aʻoaʻo, pe o loʻo faʻaaogaina vaega MLToolkit, e aofia ai le Python Gateway. O loʻo i ai i le kulupu le tele o faʻataʻitaʻiga faʻatinoina (faʻatasi ai ma faʻamatalaga faʻamatalaga ma faʻamatalaga suʻega) i matata o maketi, gaosiga, vailaʻau ma le tele o isi pisinisi. Ina ia auai i le ML Toolkit User Group, faamolemole lafo mai se imeli puupuu i le tuatusi lea: [imeli puipuia] ma aofia ai faʻamatalaga nei i lau tusi:

  • GitHub username
  • Fa'alapotopotoga (e te galue pe su'esu'e)
  • Tulaga (lou tulaga tonu i lau fa'alapotopotoga, pe "Student" po'o le "Tutoatasi").
  • atunuu

Mo i latou na faitau i le tusiga ma e fiafia i le gafatia o InterSystems IRIS o se faʻavae mo le atinaʻeina poʻo le faʻafeiloaʻi o le atamai faʻapitoa ma masini aʻoaʻoga, matou te valaʻauina oe e faʻatalanoa ni faʻaaliga talafeagai e fiafia i lau atinaʻe. Matou te fiafia e iloilo mana'oga o lau kamupani ma fuafua fa'atasi se fuafuaga fa'atino; Fa'afeso'ota'i tuatusi imeli a la matou 'au fa'apitoa AI/ML - [imeli puipuia].

puna: www.habr.com

Faaopoopo i ai se faamatalaga