ʻO Python Gateway ma InterSystems IRIS

ʻO kēia ʻatikala e pili ana iā Python Gateway, kahi papahana kaiāulu open source no ka paepae ʻikepili InterSystems IRIS. Hāʻawi kēia papahana iā ʻoe e hoʻonohonoho i nā algorithm aʻo mīkini i hana ʻia ma Python (ke kaiapuni nui no ka nui o Data Scientists), e hoʻohana i nā hale waihona puke i mākaukau e hana wikiwiki i nā hoʻonā AI / ML analytical robotic ma ke kahua InterSystems IRIS. Ma kēia ʻatikala, e hōʻike wau iā ʻoe pehea e hiki ai i InterSystems IRIS ke hoʻonohonoho i nā kaʻina Python, hoʻokō pono i ka hoʻoili ʻikepili ʻelua ala, a hana i nā kaʻina ʻoihana akamai.

E hoʻolālā

  1. Hoʻomau
  2. Mea hana.
  3. Ke hoʻonohonoho ʻana
  4. API.
  5. Hoʻohana like.
  6. ʻO Jupyter Notebook.
  7. Nā hopena.
  8. Nā loulou.
  9. M.L.Toolkit.

Hōʻike

ʻO Python kahi ʻōlelo hoʻolālā kiʻekiʻe kiʻekiʻe, e pili ana i ka hoʻomaikaʻi ʻana i ka huahana a me ka heluhelu ʻana i nā code. Ma kēia pūʻulu ʻatikala, e kamaʻilio wau e pili ana i ka hiki ke hoʻohana i ka ʻōlelo Python ma ka InterSystems IRIS platform, ʻoiai ke kumu nui o kēia ʻatikala ʻo ka hoʻohana ʻana iā Python ma ke ʻano he ʻōlelo no ka hana ʻana a me ka hoʻohana ʻana i nā hiʻohiʻona aʻo mīkini.

ʻO ke aʻo ʻana o ka mīkini (ML) kahi papa o nā ʻano hana naʻauao, ʻo ka hiʻohiʻona ʻaʻole ia ka hopena pololei o kahi pilikia, akā ke aʻo ʻana i ke kaʻina o ka hoʻoponopono ʻana i nā pilikia like.

ʻO nā algorithm aʻo mīkini a me nā hiʻohiʻona e lilo i mea maʻamau. Nui nā kumu no kēia, akā e hele mai nā mea āpau i ka hiki, ka maʻalahi, a me ka loaʻa ʻana o nā hopena kūpono. He ʻenehana hou paha ka clustering a i ʻole ka neural network?

ʻOiaʻiʻo ʻaʻole, akā i kēia mau lā ʻaʻole pono e kākau i nā haneli haneli o nā laina code e holo ai i hoʻokahi hiʻohiʻona, a ke liʻiliʻi a liʻiliʻi nā kumukūʻai o ka hana ʻana a me ka hoʻohana ʻana i nā hiʻohiʻona.

Ke ulu nei nā mea hana - ʻoiai ʻaʻole kā mākou mau mea hana AI/ML e pili ana i ka GUI, ʻike ʻia ka holomua a mākou i ʻike ai me nā ʻano papa ʻike ʻē aʻe e like me BI (mai ke kākau ʻana i ka code a hiki i ka hoʻohana ʻana i nā frameworks a me GUI oriented configurable solutions). i nā mea hana hana AI/ML. Ua hala mua mākou i ka pae o ke kākau ʻana i nā code a i kēia lā ke hoʻohana nei mākou i nā frameworks no ke kūkulu ʻana a me ke aʻo ʻana i nā kumu hoʻohālike.

ʻO nā hoʻomaikaʻi ʻē aʻe, e like me ka hiki ke hoʻolaha i kahi hoʻohālike i hoʻomaʻamaʻa mua ʻia kahi e hoʻopau ai ka mea hoʻohana hope i ka hoʻomaʻamaʻa ʻana i ke kumu hoʻohālike ma kā lākou ʻikepili kikoʻī, e maʻalahi hoʻi i ka hoʻomaka ʻana i ke aʻo ʻana i ka mīkini. ʻO kēia mau holomua e maʻalahi ke aʻo ʻana i ka mīkini, no ka poʻe loea a no nā ʻoihana holoʻokoʻa.

Ma kekahi ʻaoʻao, hōʻiliʻili mākou i nā ʻikepili hou aʻe. Me kahi kahua ʻikepili i hui pū ʻia e like me InterSystems IRIS, hiki ke hoʻomākaukau koke ʻia kēia ʻike āpau a hoʻohana ʻia i mea hoʻokomo no nā kumu hoʻohālike mīkini.

Me ka hoʻololi ʻana i ke ao, ʻoi aku ka maʻalahi o ka hoʻokuʻu ʻana i nā papahana AI/ML. Hiki iā mākou ke hoʻopau wale i nā kumuwaiwai a mākou e pono ai. Eia kekahi, mahalo i ka parallelization i hāʻawi ʻia e nā kapuaʻi kapuaʻi, hiki iā mākou ke mālama i ka manawa pau ʻole.

Akā pehea nā hopena? ʻO kēia kahi e paʻakikī ai nā mea. Nui nā mea hana no ke kūkulu ʻana i nā hiʻohiʻona, aʻu e kūkākūkā ai ma hope. ʻAʻole maʻalahi ke kūkulu ʻana i kahi kumu hoʻohālike maikaʻi, akā he aha ka mea e hiki mai ana? ʻO ka loaʻa kālā ʻana mai ka hoʻohana ʻana i ke kumu hoʻohālike e kahi ʻoihana he hana koʻikoʻi ʻole. ʻO ke kumu o ka pilikia, ʻo ia ka hoʻokaʻawale ʻana o nā haʻahaʻa hana analytical a transactional a me nā hiʻohiʻona ʻikepili. Ke hoʻomaʻamaʻa mākou i kahi kumu hoʻohālike, hana maʻamau mākou i ka ʻikepili mōʻaukala. Akā ʻo ka wahi no ke kumu hoʻohālike i kūkulu ʻia ma ka hoʻoili ʻikepili transactional. He aha ka maikaʻi o ke kumu hoʻohālike hoʻopunipuni hoʻopunipuni maikaʻi loa inā holo mākou i hoʻokahi manawa i ka lā? Ua haʻalele ka poʻe scammers me ke kālā. Pono mākou e hoʻomaʻamaʻa i ke kumu hoʻohālike i ka ʻikepili mōʻaukala, akā pono mākou e hoʻopili iā ia i ka manawa maoli ma nā ʻikepili hou e hiki mai ana i hiki i kā mākou ʻoihana ʻoihana ke hana e like me nā wānana i hana ʻia e ke kumu hoʻohālike.

ʻO ML Toolkit kahi mea hana pono e hana ai: e hui pū ana i nā hiʻohiʻona a me kahi kaiapuni kālepa i hiki ke hoʻohana pololei ʻia nā kumu hoʻohālike āu e kūkulu ai i kāu kaʻina ʻoihana. ʻO Python Gateway kahi ʻāpana o ka ML Toolkit a hāʻawi i ka hoʻohui ʻana me ka ʻōlelo Python (e like me R Gateway, ʻo ia kahi ʻāpana o ka ML Toolkit e hāʻawi i ka hoʻohui ʻana me ka ʻōlelo R).

Kākoʻo lāʻau

Ma mua o ka hoʻomau ʻana, makemake wau e wehewehe i kekahi mau mea hana Python a me nā hale waihona puke a mākou e hoʻohana ai ma hope.

o ka 'ike loea hou

  • ʻO ka Python kahi ʻōlelo hoʻolālā kiʻekiʻe. ʻO ka pōmaikaʻi nui o ka ʻōlelo he hale waihona puke nui o ka makemakika, ML a me AI. E like me ObjectScript, he ʻōlelo pili i nā mea, akā ua wehewehe ʻia nā mea āpau me ka dynamically, ʻaʻole statically. He mea hoʻi nā mea a pau. Manaʻo nā ʻatikala ma hope i kahi kamaʻāina i ka ʻōlelo. Inā makemake ʻoe e hoʻomaka e aʻo, paipai wau e hoʻomaka me palapala.
  • No kā mākou hoʻomaʻamaʻa aʻe, hoʻonohonoho Python 3.6.7 64bit.
  • IDE: Ke hoʻohana nei au ʻO PyCharm, akā ma ka laulā he nui. Inā ʻoe e hoʻohana ana iā Atelier, aia kahi plugin Eclipse no nā mea hoʻomohala Python. Inā ʻoe e hoʻohana ana i ka VS Code, a laila aia kahi hoʻonui no Python.
  • Notebook: Ma kahi o kahi IDE, hiki iā ʻoe ke kākau a kaʻana like i kāu mau palapala ma nā puke puke pūnaewele. ʻO ka mea kaulana loa o lākou ʻO Jupyter.

Waihona Puke

Eia kahi papa inoa (ʻāpana) o nā hale waihona puke aʻo mīkini:

  • ʻApoʻake - he pūʻolo kumu no nā helu kikoʻī.
  • Nā Pandas - nā hoʻolālā ʻikepili hana kiʻekiʻe a me nā mea hana ʻikepili.
  • matplotlib - Ka hana ʻana i nā pakuhi.
  • Kapakai - ka ʻike ʻike ʻikepili e pili ana i ka matplotlib.
  • Sklearn - nā ʻano aʻo mīkini.
  • XGBoost - nā algorithm aʻo mīkini i loko o ke ʻano Gradient Boosting.
  • Gensim — NLP.
  • Keras - nā pūnaewele neural.
  • Pulelehua he kahua no ka hana ʻana i nā hiʻohiʻona aʻo mīkini.
  • ʻO PyTorch he kahua no ka hana ʻana i nā hiʻohiʻona aʻo mīkini e pili ana iā Python.
  • ʻO Nyoka - PMML mai nā hiʻohiʻona like ʻole.

Hiki i nā ʻenehana AI/ML ke hoʻoikaika i ka ʻoihana a hiki ke hoʻololi. Eia kekahi, i kēia lā ua maʻalahi kēia mau ʻenehana e hoʻomohala a hoʻokō. Hoʻomaka e aʻo e pili ana i nā ʻenehana AI/ML a pehea e hiki ai iā lākou ke kōkua i kāu hui e ulu.

Kāu Mau Koho Paʻamau

Nui nā ala e hoʻokomo a hoʻohana i ka Python Gateway:

  • Kaukau
    • Windows
    • Linux
    • Mac
  • Docker
    • E hoʻohana i ke kiʻi mai DockerHub
    • E hana i kou nānā ponoʻī

Ma waho o ke ʻano o ka hoʻokomo ʻana, pono ʻoe i ke code kumu. ʻO kahi wale nō e hoʻoiho ai i ke code hoʻokuʻu ʻaoʻao. Loaʻa iā ia nā hoʻokuʻu kūpaʻa i hoʻāʻo ʻia, e hopu wale i ka mea hou loa. I kēia manawa he 0.8, akā i ka manawa e loaʻa hou nā mea hou. Mai clone / hoʻoiho i ka waihona, hoʻoiho i ka hoʻokuʻu hou loa.

Kaukau

Inā ʻoe e kau nei i ka Python Gateway ma kahi ʻōnaehana hana, a laila ma mua (me ka ʻole o ka ʻōnaehana hana) pono ʻoe e hoʻokomo iā Python. No kēia:

  1. E hoʻouka i ka Python 3.6.7 64 bit. Manaʻo ʻia e hoʻokomo iā Python i ka papa kuhikuhi paʻamau.
  2. E hoʻouka i ka module dill: pip install dill.
  3. Hoʻoiho i ke code ObjectScript (ʻo ia hoʻi. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) i kekahi wahi me nā huahana. Inā makemake ʻoe i kahi wahi e kākoʻo ai i nā huahana, holo: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Wahi kahea DLL/SO/DYLIB i ka waihona bin kāu laʻana InterSystems IRIS. Pono e loaʻa ka waihona waihona ma ke ala i hoʻihoʻi ʻia e write ##class(isc.py.Callout).GetLib().

Windows

  1. E hōʻoia i ka loli kaiapuni PYTHONHOME kuhikuhi iā Python 3.6.7.
  2. E hōʻoia i ka loli kaiapuni ʻōnaehana PATH loaʻa i kahi loli PYTHONHOME (a i ʻole ka papa kuhikuhi e kuhikuhi ai).

Linux (Debian/Ubuntu)

  1. E nānā inā he loli kaiapuni PATH aia i loko /usr/lib и /usr/lib/x86_64-linux-gnu. E hoʻohana i ka faila /etc/environment e hoʻonohonoho i nā mea hoʻololi kaiapuni.
  2. Ina he hewa undefined symbol: _Py_TrueStruct hoʻonohonoho i ka hoʻonohonoho PythonLib. i loko nō hoʻi Heluhelu aia kahi ʻāpana Hoʻoponopono.

Mac

  1. I kēia manawa, kākoʻo wale ʻia ka python 3.6.7 mai python.org. E nānā i ka mea hoʻololi PATH.

Inā ua hoʻololi ʻoe i nā ʻano like ʻole, e hoʻomaka hou i kāu huahana InterSystems.

Docker

He nui nā pono o ka hoʻohana ʻana i nā ipu:

  • Ka lawe ʻana
  • Ke kūpono
  • ʻO ka hoʻonani
  • māmā
  • Ka hoololi ole

E nānā i kēia he moʻo ʻatikala no ka ʻike hou aku e pili ana i ka hoʻohana ʻana iā Docker me nā huahana InterSystems.

ʻO nā kūkulu Python Gateway āpau i kēia manawa i hoʻokumu ʻia i ka pahu. 2019.4.

Kiʻi i pau

Holo: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:lateste hoʻoiho a holo i ka Python Gateway me InterSystems IRIS Community Edition. ʻo ia wale nō.

E hana i kou nānā ponoʻī

No ke kūkulu ʻana i kahi kiʻi docker, holo i ke kumu o ka waihona: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Ma ka maʻamau, kūkulu ʻia ke kiʻi ma muli o ke kiʻi store/intersystems/iris-community:2019.4.0.383.0, akā naʻe hiki iā ʻoe ke hoʻololi i kēia ma ka hoʻonohonoho ʻana i ka loli IMAGE.
No ke kūkulu ʻana mai InterSystems IRIS holo: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Ma hope o kēlā, hiki iā ʻoe ke holo i ke kiʻi docker:

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

Inā hoʻohana ʻoe i kahi kiʻi e pili ana i InterSystems IRIS Community Edition, ʻaʻole pono ʻoe e kuhikuhi i kahi kī.

Comments

  • Kaʻina Hoʻāʻo isc.py.test.Process mālama i kekahi mau kiʻi i kahi papa kuhikuhi manawa. Makemake paha ʻoe e hoʻololi i kēia ala i kahi papa kuhikuhi i kau ʻia. No ka hana ʻana i kēia, hoʻoponopono i ka hoʻonohonoho WorkingDir e kuhikuhi ana i ka papa kuhikuhi i kau ʻia.
  • No ke komo ʻana i ka terminal, holo: docker exec -it irispy sh.
  • E komo i ka Portal Management System ma ke komo ʻana SuperUser/SYS.
  • No ka hooki ʻana i kahi pahu, holo: docker stop irispy && docker rm --force irispy.

Ke nānā nei i ka hoʻokomo

Ke hoʻokomo nei ʻoe i ka Python Gateway, pono e nānā i ka hana ʻana. E holo i kēia code ma ka InterSystems IRIS terminal:

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

Pono ka hopena HELLO - ka waiwai o ka hoʻololi Python x. Inā ke kūlana hoʻihoʻi sc he kuhihewa paha var kaawale, nānā Readme—Pauku hoʻoponopono.

API

Hoʻokomo ʻia ʻo Python Gateway a ua hōʻoia ʻoe e hana ana. ʻO ka manawa e hoʻomaka ai e hoʻohana iā ia!
ʻO ke kikowaena nui o Python isc.py.Main. Hāʻawi ia i nā pūʻulu o nā ʻano (hoʻihoʻi a pau %Status):

  • Hoʻokō code
  • Hoʻolaha ka ʻike
  • Kokua

Hoʻokō code

ʻAe kēia mau ala iā ʻoe e hoʻokō i ka code Python arbitrary.

SimpleString

SimpleString ʻo ia ke ala nui. Loaʻa iā 4 mau manaʻo hoʻopaʻapaʻa koho:

  • code ʻo ia ka laina code e hoʻokō ai. ʻAno hānai laina: $c(10).
  • returnVariable ʻo ia ka inoa o ka mea hoʻololi e hoʻi.
  • serialization - pehea e hoʻolaha ai returnVariable. 0 - kaula (paʻamau), 1 - repr.
  • result - ByRef e pili ana i ka loli kahi i kākau ʻia ai ka waiwai returnVariable.

Ma luna aʻe ua hana mākou:

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

Ma kēia hiʻohiʻona, hāʻawi mākou i kahi hoʻololi Python x ʻo keʻano Hello a makemake e hoʻihoʻi i ka waiwai o kahi hoʻololi Python x i kahi hoʻololi ObjectScript var.

Hoʻokō Code

ʻO ka ExecuteCode kahi ʻokoʻa palekana a ʻoi aku ka paʻa SimpleString.
ʻO nā laina ma ka InterSystems IRIS platform ua kaupalena ʻia i 3 mau huaʻōlelo, a inā makemake ʻoe e hoʻokō i kahi ʻāpana code lōʻihi, pono ʻoe e hoʻohana i nā kahawai.
Loaʻa i nā manaʻo ʻelua:

  • code - kahi kaula a i ʻole kahawai o Python code e hoʻokō ʻia.
  • variable - (koho) hāʻawi i ka hopena o ka hoʻokō code keia hoololi Python.

Manaʻo e hoʻohana:

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

Ma kēia laʻana, hoʻonui mākou i ka 2 me 3 a mālama i ka hopena i loko o kahi ʻano Python y.

Hoʻolaha ka ʻike

Hāʻawi i ka ʻikepili iā Python a mai.

Python -> InterSystems IRIS

Aia nā ala 4 e loaʻa ai ka waiwai o kahi ʻano Python ma InterSystems IRIS, e pili ana i ka serialization āu e pono ai:

  • String no nā ʻano ʻikepili maʻalahi a me ka debugging.
  • Repr no ka mālama ʻana i nā mea maʻalahi a me ka debugging.
  • JSON no ka hoʻololi maʻalahi o ka ʻikepili ma ka ʻaoʻao InterSystems IRIS.
  • Pickle e mālama i nā mea.

Hāʻawi kēia mau ala iā ʻoe e loaʻa i nā mea hoʻololi mai Python ma ke ʻano he kaula a i ʻole he kahawai.

  • GetVariable(variable, serialization, .stream, useString) - loaa serialization loli variable в stream. ^ E Ha yM. Inā useString ʻo 1 a kau ʻia ka serialization i kahi kaula, a laila hoʻihoʻi ʻia kahi kaula, ʻaʻole kahi kahawai.
  • GetVariableJson(variable, .stream, useString) - loaʻa iā JSON serialization o kahi loli.
  • GetVariablePickle(variable, .stream, useString, useDill) -E kiʻi i ka serialization Pickle (a i ʻole Dill) o kahi loli.

E ho'āʻo kākou e kiʻi i kā mākou hoʻololi y.

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

InterSystems IRIS -> Python

Ke hoʻouka nei i ka ʻikepili mai InterSystems IRIS i Python.

  • ExecuteQuery(query, variable, type, namespace) - hana i kahi waihona (pandas dataframe ai ole ia, list) mai ka nīnau sql a hoʻonoho iā ia i ka hoʻololi python variable. Eke 'ūlina isc.py pono e loaa ma ia wahi namespace - e hoʻokō ʻia ka noi ma laila.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - hoʻouka i ka ʻikepili honua global mai ka palapala inoa start i luna end ma Python ma ke ʻano he ʻano hoʻololi type: list, a i ʻole nā ​​pandas dataframe. ʻO ka wehewehe ʻana i nā manaʻo koho mask a labels loaʻa ma ka papa palapala a me ka waihona Nā palapala hoʻoili ʻikepili.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - hoʻouka i ka ʻikepili papa class mai id start i luna end ma Python ma ke ʻano he ʻano hoʻololi type: list, a i ʻole nā ​​pandas dataframe. properties — papa inoa (i hoʻokaʻawale ʻia e ke koma) o nā waiwai papa e hoʻouka ʻia i loko o ka waihona. Kākoʻo ʻia nā maka * и ?. Paʻamau - * (mau waiwai a pau). Waiwai %%CLASSNAME mālama ʻole ʻia.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - hoʻouka i ka ʻikepili papa table mai id start i luna end i ka python.

ExecuteQuery - honua (e hāʻawi ʻia kekahi nīnau SQL kūpono iā Python). Eia naʻe, ExecuteGlobal a me kāna mau ʻōwili ExecuteClass и ExecuteTable hana me kekahi mau kapu. ʻOi aku ka wikiwiki o lākou (3-5 mau manawa ʻoi aku ka wikiwiki ma mua o ka mea hoʻokele ODBC a ʻoi aku ka wikiwiki o 20 mau manawa ma mua ExecuteQuery). ʻIke hou aku ma Nā palapala hoʻoili ʻikepili.
Kākoʻo kēia mau ʻano a pau i ka hoʻoili ʻana o ka ʻikepili mai kekahi wahi. Eke 'ūlina isc.py pono e loaʻa ma ka wahi i hoʻopaʻa ʻia.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - ka hāʻawi ʻana i nā hopena o kekahi nīnau SQL kūpono iā Python. ʻO kēia ke ʻano hoʻoili ʻikepili lohi loa. E hoʻohana inā ExecuteGlobal a ʻaʻole loaʻa kona mau ʻōwili.

Nā hoʻopaʻapaʻa:

  • query - sql nīnau.
  • variable - ka inoa o ka helu Python kahi i kākau ʻia ai ka ʻikepili.
  • type - list a i ʻole nā ​​pandas dataframe.
  • namespace - kahi e hoʻokō ʻia ai ka noi.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - hāʻawi i kahi honua iā Python.

Nā hoʻopaʻapaʻa:

  • global ʻo ia ka inoa o ka honua me ka ʻole ^
  • variable - ka inoa o ka helu Python kahi i kākau ʻia ai ka ʻikepili.
  • type - list a i ʻole nā ​​pandas dataframe.
  • start - ka inoa mua o ka honua. Pono %Integer.
  • end ʻo ia ka inoa hope loa o ka honua. Pono %Integer.
  • mask - pale o nā waiwai honua. ʻOi aku ka pōkole o ka mask ma mua o ka helu o nā kahua ma ka honua (ʻo ia ka mea e hoʻokuʻu ʻia nā kahua ma ka hopena). Pehea e hōʻano ai i ka mask:
    • + e hāʻawi i ka waiwai e like me ia.
    • - kālele waiwai.
    • b — ʻAno Boolean (0 - False, koena a pau - True).
    • d — Ka lā (mai $horolog, ma Windows mai 1970, ma Linux mai 1900).
    • t - Manawa ($horolog, kekona ma hope o ke aumoe).
    • m — Palapala manawa (YEAR-MONTH-DAY HOUR:MINUTE:SECOND format string).
  • labels - %Papa inoa o nā kolamu. ʻO ka mea mua ka inoa o ka subscript.
  • namespace - kahi e hoʻokō ʻia ai ka noi.

Papa Hoʻokō

e uhi mai ExecuteGlobal. Hoʻomākaukau i kahi kelepona ma muli o ka wehewehe papa ExecuteGlobal a kāhea aku iā ia.

ExecuteClass(class, variable, type, start, end, properties, namespace) - hāʻawi i ka ʻikepili papa iā Python.

Nā hoʻopaʻapaʻa:

  • class - inoa papa
  • variable - ka inoa o ka helu Python kahi i kākau ʻia ai ka ʻikepili.
  • type - list a i ʻole nā ​​pandas dataframe.
  • start — hoomaka Id.
  • end - Id hope loa
  • properties — papa inoa (i hoʻokaʻawale ʻia e ke koma) o nā waiwai papa e hoʻouka ʻia i loko o ka waihona. Kākoʻo ʻia nā maka * и ?. Paʻamau - * (mau waiwai a pau). Waiwai %%CLASSNAME mālama ʻole ʻia.
  • namespace - kahi e hoʻokō ʻia ai ka noi.

Hoʻoholo ʻia nā waiwai a pau koe wale nō nā ʻano waiwai %Date, %Time, %Boolean и %TimeStamp - ua hoʻohuli ʻia lākou i nā papa Python e pili ana.

Papa Hoʻokō

e uhi mai ExecuteClass. Unuhi i ka inoa papa i ka inoa papa a me nā kelepona ExecuteClass. pūlima:

ExecuteTable(table, variable, type, start, end, properties, namespace) - hāʻawi i ka ʻikepili papa iā Python.

Nā hoʻopaʻapaʻa:

  • table - inoa papa.
    Hoʻoholo ʻia nā manaʻo ʻē aʻe a pau. ExecuteClass.

Nā Nānā

  • ExecuteGlobal, ExecuteClass и ExecuteTable hana wikiwiki like.
  • ExecuteGlobal 20 manawa ʻoi aku ka wikiwiki ma mua o ExecuteQuery ma nā ʻikepili nui (ka manawa hoʻoili > 0.01 kekona).
  • ExecuteGlobal, ExecuteClass и ExecuteTable e hana ma ka honua me kēia ʻano: ^global(key) = $lb(prop1, prop2, ..., propN) kahi key he huinahelu.
  • no ka mea, ExecuteGlobal, ExecuteClass и ExecuteTable laulā waiwai kākoʻo %Date pili i ka laulā mktime a pili i ka OSmakani: 1970-01-01, makefile linux 1900-01-01, mac). Hoʻohana %TimeStampe hele i ka ʻikepili ma waho o kēia pae a i ʻole e hoʻohana i ka ʻikepili pandas e like me no ka papa inoa wale no keia palena.
  • no ka mea, ExecuteGlobal, ExecuteClass и ExecuteTable ʻO nā ʻōlelo hoʻopaʻapaʻa a pau koe ke kumu ʻikepili (ka honua, ka papa a i ʻole ka pākaukau) a me nā mea hoʻololi he koho.

examples

papa hoao isc.py.test.Person Aia kekahi ala e hōʻike ana i nā koho hoʻoili ʻikepili a pau:

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)

ʻano kelepona do ##class(isc.py.test.Person).Test() e ʻike i ka hana ʻana o nā ʻano hoʻoili ʻikepili āpau.

Nā ʻano kōkua

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - e kiʻi i ka ʻike e pili ana i ka loli: inā paha i wehewehe ʻia, ka papa a me ka lōʻihi o ka serialization.
  • GetVariableDefined(variable, .defined) - inā paha i wehewehe ʻia ka loli.
  • GetVariableType(variable, .type) - e kiʻi i ka papa o ka hoʻololi.
  • GetStatus() - e kiʻi a wehe i ka ʻokoʻa hope loa ma ka ʻaoʻao Python.
  • GetModuleInfo(module, .imported, .alias) - e kiʻi i nā ʻano modula a me ke kūlana hoʻokomo.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - loaʻa ka ʻike e pili ana i ka hana.

Interoperability

Ua aʻo ʻoe i ke kāhea ʻana iā Python Gateway mai ka pahu, e hoʻomaka kākou e hoʻohana iā ia i ka hana. ʻO ke kumu no ka launa pū ʻana me Python i kēia ʻano isc.py.ens.Operation. Hiki iā mākou ke:

  • E hoʻokō i ka code Python
  • Mālama / Hoʻihoʻi i ka pōʻaiapili Python
  • Hoʻouka a loaʻa ka ʻikepili mai Python

ʻO ka mea maʻamau, ʻo kahi hana Pyhton kahi mea hoʻopili isc.py.Main. Hana isc.py.ens.Operation hiki i ka pilina me ke kaʻina hana Python mai nā huahana InterSystems IRIS. Kākoʻo ʻia nā noi ʻelima:

  • isc.py.msg.ExecutionRequest e hoʻokō i ka code Python. hoʻi isc.py.msg.ExecutionResponse me ka hopena hoʻokō a me nā waiwai o nā mea i noi ʻia.
  • isc.py.msg.StreamExecutionRequest e hoʻokō i ka code Python. hoʻi isc.py.msg.StreamExecutionResponse ka hopena o ka hoʻokō a me nā waiwai o nā mea i noi ʻia. Analog isc.py.msg.ExecutionRequest, akā ʻae a hoʻihoʻi i nā kahawai ma kahi o nā kaula.
  • isc.py.msg.QueryRequest e hoʻololi i ka hopena o ka hoʻokō ʻana i kahi nīnau SQL. hoʻi Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest e hele i ka ʻikepili honua/papa/papa. hoʻi Ens.Response.
  • isc.py.msg.SaveRequest e mālama i ka pōʻaiapili Python. hoʻi Ens.StringResponse me ka ID pōʻaiapili.
  • isc.py.msg.RestoreRequest e hoʻihoʻi i ka pōʻaiapili Python.

    Eia hou, isc.py.ens.Operation ʻelua mau hoʻonohonoho:

    • Initializer - ke koho ʻana i kahi papa e hoʻokō i ka interface isc.py.init.Abstract. Hiki ke hoʻohana ʻia e hoʻouka i nā hana, nā modula, nā papa, a me nā mea like. Hoʻokō ʻia i hoʻokahi manawa ke hoʻomaka ke kaʻina hana.
    • PythonLib - (Linux wale nō) inā ʻike ʻoe i nā hewa boot, e hoʻonoho i kona waiwai i libpython3.6m.so a i ʻole ma ke ala piha i ka waihona Python.

Ka hana ʻana i nā kaʻina hana ʻoihana

Aia nā papa ʻelua e hoʻomaʻamaʻa i ka hoʻomohala ʻana i nā kaʻina hana ʻoihana:

  • isc.py.ens.ProcessUtils hiki iā ʻoe ke unuhi i nā annotation mai nā hana me ka hoʻololi ʻana.
  • isc.py.util.BPEmulator maʻalahi ka hoʻāʻo ʻana i nā kaʻina ʻoihana me Python. Hiki iā ia ke hoʻokō i kahi kaʻina hana (Python parts) i ka hana o kēia manawa.

Hoʻololi hoʻololi

ʻO nā kaʻina hana ʻoihana a pau i hoʻoilina mai isc.py.ens.ProcessUtils, hiki ke hoʻohana i ke ʻano GetAnnotation(name) e kiʻi i ka waiwai o kahi hōʻike haʻawina ma kona inoa. Loaʻa paha i ka hōʻike haʻawina nā mea hoʻololi e loiloi ʻia ma ka ʻaoʻao InterSystems IRIS ma mua o ka hāʻawi ʻia ʻana iā Python. Eia ka syntax no ka hoololi ana.

  • ${class:method:arg1:...:argN} - kahea ala
  • #{expr} - hoʻokō i ke code ma ka ʻōlelo ObjectScript.

Loaʻa kahi laʻana ma ke kaʻina ʻoihana hoʻāʻo isc.py.test.Process, no ka laʻana, ma ka hana Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Ma kēia laʻana:

  • #{process.WorkDirectory} hoʻihoʻi i ka waiwai WorkDirectory o ka mea process, he mea ia o ka papa isc.py.test.Process ka poe. kaʻina hana ʻoihana i kēia manawa.
  • ${%PopulateUtils:Integer:1:100} kahea i ke ano Integer keka %PopulateUtils, hoʻopaʻapaʻa hala 1 и 100, e ho'iho'i ana i ka huina helu ma ka laula 1...100.

E ho'āʻo i ka hana ʻoihana

Loaʻa ka hana hoʻokolohua a me ke kaʻina ʻoihana hoʻāʻo ma ke ʻano he ʻāpana o ka Python Gateway. No ka hoʻohana ʻana iā lākou:

  1. I ka OS terminal holo: pip install pandas matplotlib seaborn.
  2. Ma ka InterSystems IRIS terminal, holo: do ##class(isc.py.test.CannibalizationData).Import() e hoʻopiha i ka ʻikepili hoʻāʻo.
  3. Hoʻolaha i nā huahana isc.py.test.Production.
  4. Hoʻouna ʻano noi Ens.Request в isc.py.test.Process.

E ʻike kākou pehea e hana like ai. Wehe isc.py.test.Process ma ka mea hoʻoponopono BPL:

ʻO Python Gateway ma InterSystems IRIS

Hoʻokō code

ʻO ke kelepona koʻikoʻi ka hoʻokō ʻana i ka code Python:

ʻO Python Gateway ma InterSystems IRIS

Hoʻohana ʻia ke noi isc.py.msg.ExecutionRequest, eia kona mau waiwai:

  • Code — Code Python.
  • SeparateLines - inā paha e hoʻokaʻawale i ke code i nā laina no ka hoʻokō. $c(10) (n) hoʻohana ʻia e hoʻokaʻawale i nā kaula. E hoʻomaopopo ʻaʻole ʻōlelo ʻia e hana i ka memo holoʻokoʻa i ka manawa hoʻokahi, no ka hana wale ʻana kēia hana def a me nā huaʻōlelo multiline like. Default 0.
  • Variables he papa inoa i hoʻokaʻawale ʻia i ke koma o nā mea hoʻololi e hoʻohui ʻia i ka pane.
  • Serialization - Pehea e hoʻonohonoho ai i nā ʻano like ʻole a mākou e makemake ai e hoʻi. Nā koho: Str, Repr, JSON, Pickle и Dill, paʻamau Str.

I kā mākou hihia, hoʻonoho wale mākou i ka waiwai Code, no laila e hoʻohana nā waiwai ʻē aʻe i kā lākou mau waiwai paʻamau. Hoʻonohonoho mākou ma ke kelepona ʻana process.GetAnnotation("Import pandas"), i ka manawa holo e hoʻihoʻi i kahi hōʻike ma hope o ka hoʻokō ʻia ʻana o ka hoʻololi ʻana. ʻO ka hope ke code import pandas as pd e hāʻawi ʻia iā Python. GetAnnotation hiki ke hoʻohana no ka loaʻa ʻana o nā palapala Python multi-line, akā ʻaʻohe palena i kēia ala e loaʻa ai ke code. Hiki iā ʻoe ke hoʻonohonoho i ka waiwai Code ma kekahi ala kūpono iā ʻoe.

Loaʻa i nā mea hoʻololi

ʻO kekahi pilikia hoihoi e hoʻohana ana isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

ʻO Python Gateway ma InterSystems IRIS

Heluhelu ia i ka Correlation Matrix ma ka ʻaoʻao Python a unuhi i ka loli corrmat hoʻi i InterSystems IRIS ma JSON format ma ka hoʻonohonoho ʻana i nā waiwai noi:

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

Hiki iā mākou ke ʻike i nā hopena ma Visual Trace:

ʻO Python Gateway ma InterSystems IRIS

A inā makemake mākou i kēia waiwai i ka BP, hiki ke loaʻa e like me kēia: callresponse.Variables.GetAt("corrmat").

Hoʻolaha ka ʻike

Ma hope aʻe, e kamaʻilio e pili ana i ka hoʻoili ʻana i ka ʻikepili mai InterSystems IRIS i Python, nā noi hoʻoili ʻikepili āpau e hoʻokō i ka interface isc.py.msg.DataRequest, e hāʻawi ana i kēia mau waiwai:

  • Variable he ʻano Python kahi i kākau ʻia ai ka ʻikepili.
  • Type - ʻano hoʻololi: dataframe (pandas dataframe) a i ʻole list.
  • Namespace - kahi i loaʻa ai iā mākou ka ʻikepili. Eke 'ūlina isc.py pono e loaa ma keia wahi. He wahi paha kēia me ke kākoʻo huahana ʻole.

Ma muli o kēia interface, hoʻokō ʻia nā papa noi 4:

  • isc.py.msg.QueryRequest - hoʻonohonoho waiwai Query e hoʻouna i kahi nīnau SQL.
  • isc.py.msg.ClassRequest - hoʻonohonoho waiwai Class e hele i ka ʻikepili papa.
  • isc.py.msg.TableRequest - hoʻonohonoho waiwai Table e hāʻawi i ka ʻikepili papa.
  • isc.py.msg.GlobalRequest - hoʻonohonoho waiwai Global e hoʻoili i ka ʻikepili ma ka honua holoʻokoʻa.

Ma ke kaʻina hana ho'āʻo, e nānā i ka hana RAWkahi isc.py.msg.QueryRequest hōʻike ʻia ma ka hana.

ʻO Python Gateway ma InterSystems IRIS

Hoʻopaʻa a hoʻihoʻi hou i kahi ʻano Python

ʻO ka hope, hiki iā mākou ke mālama i ka pōʻaiapili Python ma InterSystems IRIS, e hana i kēia, hoʻouna isc.py.msg.SaveRequest me nā hoʻopaʻapaʻa:

  • Mask — Mālama wale ʻia nā mea hoʻololi e hoʻokō i ka mask. Kākoʻo ʻia * и ?... Laʻana: "Data*, Figure?"... Default *.
  • MaxLength — Ka lōʻihi loa o ka hoʻololi i mālama ʻia. Inā ʻoi aku ka lōʻihi o ka serialization o kahi loli, a laila e nānā ʻole ʻia. E hoʻonoho i ka 0 no ka loaʻa ʻana o nā loli o kēlā me kēia lōʻihi. Default $$$MaxStringLength.
  • Name — Ka inoa o ke ano (koho).
  • Description — Ka wehewehe ʻana o ka pōʻaiapili (koho).

Hoʻi mai Ens.StringResponse с Id pōʻaiapili mālama ʻia. Ma ke kaʻina hana ho'āʻo, e nānā i ka hana Save Context.

Noi pili isc.py.msg.RestoreRequest hoʻouka i kahi pōʻaiapili mai InterSystems IRIS i Python:

  • ContextId ʻo ia ka ʻike pōʻaiapili.
  • Clear — wehe i ka pōʻaiapili ma mua o ka hoʻihoʻi ʻana.

Puke Memo Jupyter

Puke Memo Jupyter He polokalamu punaewele punaewele e hiki ai iā ʻoe ke hana a hoʻopuka i nā puke me nā code, nā hiʻohiʻona, a me nā kikokikona. ʻAe ʻo Python Gateway iā ʻoe e nānā a hoʻoponopono i nā kaʻina BPL ma ke ʻano he Jupyter Notebook. E hoʻomanaʻo e hoʻohana ʻia nei ka mea hoʻokō Python 3 maʻamau.

Manaʻo kēia hoʻonui e loaʻa i nā annotation nā code Python a hoʻohana i nā inoa hana e like me nā poʻo inoa ma mua. I kēia manawa hiki ke hoʻomohala i nā kaʻina hana ʻoihana PythonGateway ma Jupyter Notebook. Eia ka mea hiki:

  • E hana i nā kaʻina hana ʻoihana hou
  • Holoi i nā kaʻina hana ʻoihana
  • Hana i nā hana hou
  • Hoʻololi i nā hana
  • Holoi i nā hana

ʻaneʻi wikiō demo. A me kekahi mau screenshots:

Kaʻina hana Explorer

ʻO Python Gateway ma InterSystems IRIS

Hoʻoponopono kaʻina hana

ʻO Python Gateway ma InterSystems IRIS

Kāu Mau Koho Paʻamau

  1. Pono ʻoe i InterSystems IRIS 2019.2+.
  2. E hoʻouka i ka PythonGateway v0.8+ (koi wale isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Hoʻohou i ka code ObjectScript mai ka waihona.
  4. Holo do ##class(isc.py.util.Jupyter).Install() a hahai i nā kuhikuhi.

ʻO ka palapala.

haʻina

ʻO MLToolkit kahi pūʻulu o nā mea hana e manaʻo nei e hoʻohui i nā hiʻohiʻona a me kahi kaiapuni kālepa i hiki ke hoʻohana maʻalahi i nā hiʻohiʻona i kūkulu ʻia i kāu kaʻina hana. ʻO Python Gateway kahi ʻāpana o MLToolkit a hāʻawi i ka hoʻohui ʻana me ka ʻōlelo Python, e ʻae iā ʻoe e hoʻonohonoho i nā algorithm aʻo mīkini i hana ʻia ma Python (ke kumu nui no nā ʻepekema Data he nui), e hoʻohana i nā hale waihona puke i mākaukau e hana wikiwiki i ka adaptive, robotic analytical AI / Nā hoʻonā ML ma ka InterSystems platform IRIS.

kūmole

MLToolkit

ʻO ka hui mea hoʻohana MLToolkit kahi waihona GitHub pilikino i hana ʻia ma ke ʻano he ʻāpana o ka hui InterSystems hui GitHub. Hāʻawi ʻia ia i nā mea hoʻohana o waho e hoʻokomo, aʻo, a i ʻole e hoʻohana nei i nā ʻāpana MLToolkit, me ka Python Gateway. He nui nā hihia i hoʻokō ʻia e ka hui (me ka code kumu a me ka ʻikepili hōʻike) ma nā ʻoihana kūʻai, hana, lāʻau lapaʻau a me nā ʻoihana ʻē aʻe. No ke komo ʻana i ka hui mea hoʻohana ML Toolkit, e ʻoluʻolu e hoʻouna i kahi leka uila pōkole i kēia helu wahi: [pale ʻia ka leka uila] a e hoʻokomo i kēia ʻike i kāu leka:

  • inoa inoa GitHub
  • Hui (hana a aʻo paha ʻoe)
  • Ke kūlana (kou kūlana maoli i kāu hui, ʻo "Haʻawina" a i ʻole "Kuʻokoʻa").
  • aina

No ka poʻe i heluhelu i ka ʻatikala a makemake i InterSystems IRIS ma ke ʻano he kahua no ka hoʻomohala ʻana a i ʻole ka hoʻokipa ʻana i ka naʻauao artificial a me nā mīkini aʻo mīkini, kono mākou iā ʻoe e kūkākūkā i nā hiʻohiʻona hiki ke hoihoi i kāu ʻoihana. E kālele mākou i nā pono o kāu ʻoihana a hoʻoholo pū i kahi hoʻolālā hana; leka uila leka uila o kā mākou hui loea AI/ML - [pale ʻia ka leka uila].

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka