Python Gateway ni InterSystems IRIS

Nkan yii jẹ nipa Python Gateway, iṣẹ akanṣe agbegbe orisun ṣiṣi fun Syeed data InterSystems IRIS. Ise agbese yii ngbanilaaye lati ṣe agbekalẹ eyikeyi awọn algoridimu ikẹkọ ẹrọ ti a ṣẹda ni Python (agbegbe akọkọ fun ọpọlọpọ awọn onimọ-jinlẹ data), lo ọpọlọpọ awọn ile-ikawe ti a ti ṣetan lati ṣẹda adaṣe ni iyara, awọn ipinnu AI / ML itupalẹ roboti lori pẹpẹ InterSystems IRIS. Ninu nkan yii, Emi yoo ṣafihan bii InterSystems IRIS ṣe le ṣe ilana awọn ilana ni Python, ṣe ibaraẹnisọrọ data ọna meji daradara, ati ṣẹda awọn ilana iṣowo oye.

Gbero

  1. Ifaara.
  2. Awọn irinṣẹ.
  3. Fifi sori ẹrọ.
  4. API.
  5. Ibaṣepọ.
  6. Jupyter Notebook.
  7. Awọn ipinnu.
  8. Awọn ọna asopọ.
  9. MLToolkit.

Ifihan

Python jẹ ipele giga, ede siseto idi gbogbogbo ti o ni ero lati mu ilọsiwaju iṣelọpọ idagbasoke ati kika koodu. Ninu jara ti awọn nkan, Emi yoo jiroro lori awọn iṣeeṣe ti lilo Python lori ipilẹ InterSystems IRIS, pẹlu idojukọ akọkọ ti nkan yii ni lilo Python gẹgẹbi ede fun ṣiṣẹda ati ṣiṣiṣẹ awọn awoṣe ikẹkọ ẹrọ.

Ẹkọ ẹrọ (ML) jẹ kilasi ti awọn ọna itetisi atọwọda, ẹya abuda eyiti kii ṣe ojutu taara ti iṣoro kan, ṣugbọn kikọ ni ilana ti yanju ọpọlọpọ awọn iṣoro ti o jọra.

Awọn algoridimu ikẹkọ ẹrọ ati awọn awoṣe n di diẹ sii wọpọ. Awọn idi pupọ lo wa fun eyi, ṣugbọn gbogbo rẹ wa si iraye si, ayedero ati ṣiṣe awọn abajade to wulo. Njẹ iṣupọ tabi paapaa nẹtiwọọki nkankikan ṣe awoṣe imọ-ẹrọ tuntun kan?

Nitoribẹẹ kii ṣe, ṣugbọn ni ode oni ko si iwulo lati kọ awọn ọgọọgọrun egbegberun awọn laini koodu lati ṣiṣẹ awoṣe kan, ati idiyele ti ṣiṣẹda ati lilo awọn awoṣe n dinku ati dinku.

Awọn irinṣẹ ti n yipada - lakoko ti a ko ni awọn irinṣẹ AI / ML ni kikun GUI-centric, ilọsiwaju ti a ti rii pẹlu ọpọlọpọ awọn kilasi miiran ti awọn eto alaye, gẹgẹbi BI (lati koodu kikọ si lilo awọn ilana ati awọn solusan atunto GUI-centric) , jẹ tun ṣe akiyesi ni awọn irinṣẹ fun ṣiṣẹda AI / ML. A ti kọja ipele ti koodu kikọ ati loni a lo awọn ilana lati kọ ati kọ awọn awoṣe.

Awọn ilọsiwaju miiran, gẹgẹbi agbara lati pin kaakiri awoṣe ti ikẹkọ tẹlẹ nibiti olumulo ipari ni lati pari ikẹkọ awoṣe lori data pato wọn, tun jẹ ki o rọrun lati bẹrẹ pẹlu ẹkọ ẹrọ. Awọn ilọsiwaju wọnyi jẹ ki ẹrọ ikẹkọ rọrun pupọ fun awọn alamọja ati awọn ile-iṣẹ ni gbogbogbo.

Ni apa keji, a n gba data diẹ sii ati siwaju sii. Pẹlu ipilẹ data iṣọkan bi InterSystems IRIS, gbogbo alaye yii le ṣee murasilẹ lẹsẹkẹsẹ ati lo bi titẹ si awọn awoṣe ikẹkọ ẹrọ.

Pẹlu gbigbe si awọsanma, ifilọlẹ AI / ML awọn iṣẹ akanṣe ti di rọrun ju lailai. A le jẹ awọn orisun ti a nilo nikan. Pẹlupẹlu, o ṣeun si isọdọkan ti a funni nipasẹ awọn iru ẹrọ awọsanma, a le ṣafipamọ akoko ti o lo.

Ṣugbọn kini nipa awọn abajade? Eyi ni ibi ti awọn nkan ti ni idiju diẹ sii. Awọn irinṣẹ pupọ wa fun awọn awoṣe ile, eyiti Emi yoo jiroro ni atẹle. Ṣiṣeto awoṣe to dara ko rọrun, ṣugbọn kini atẹle? Ṣiṣe èrè lati lilo awoṣe iṣowo tun jẹ iṣẹ-ṣiṣe ti kii ṣe pataki. Gbongbo iṣoro naa ni iyapa ti iṣiro ati awọn iṣẹ ṣiṣe iṣowo, ati awọn awoṣe data. Nigba ti a ba ṣe ikẹkọ awoṣe, a maa n ṣe lori data itan. Ṣugbọn aaye fun awoṣe ti a ṣe ni sisẹ data iṣowo. Kini o dara ni awoṣe wiwa idunadura arekereke ti o dara julọ ti a ba ṣiṣẹ lẹẹkan ni ọjọ kan? Awọn scammers ti gun niwon osi pẹlu awọn owo. A nilo lati kọ awoṣe lori data itan, ṣugbọn a tun nilo lati lo ni akoko gidi lori data ti nwọle tuntun ki awọn ilana iṣowo wa le ṣiṣẹ lori awọn asọtẹlẹ ti awoṣe ṣe.

Ohun elo irinṣẹ ML jẹ eto awọn irinṣẹ ti o ni ero lati ṣe bẹ: ṣọkan awọn awoṣe ati agbegbe iṣowo ki awọn awoṣe ti a ṣe le ni irọrun lo taara ni awọn ilana iṣowo rẹ. Python Gateway jẹ apakan ti Ohun elo irinṣẹ ML ati pese isọpọ pẹlu ede Python (bii bi R Gateway, jẹ apakan ti Ohun elo ML n pese isọpọ pẹlu ede R).

Awọn irinṣẹ

Ṣaaju ki a to tẹsiwaju, Emi yoo fẹ lati ṣe apejuwe awọn irinṣẹ Python diẹ ati awọn ile-ikawe ti a yoo lo nigbamii.

ti imo

  • Python jẹ itumọ, ipele giga, ede siseto idi gbogbogbo. Anfani akọkọ ti ede ni ile-ikawe nla ti mathematiki, ML ati awọn ile-ikawe AI. Gẹgẹbi ObjectScript, o jẹ ede ti o da lori ohun, ṣugbọn ohun gbogbo ni asọye ni agbara kuku ju ni iṣiro. Bakannaa ohun gbogbo jẹ ohun elo. Lẹyìn ìwé ro a ran faramọ pẹlu awọn ede. Ti o ba fẹ bẹrẹ ikẹkọ, Mo ṣeduro bẹrẹ pẹlu iwe.
  • Fun awọn adaṣe atẹle wa, ṣeto Python 3.6.7 64 die-die.
  • IDE: Mo lo PyCharm, ṣugbọn ni apapọ wọn pupo. Ti o ba lo Atelier, ohun itanna Eclipse wa fun awọn olupilẹṣẹ Python. Ti o ba nlo koodu VS, itẹsiwaju wa fun Python.
  • Iwe akiyesi: Dipo IDE, o le kọ ati pin awọn iwe afọwọkọ rẹ sinu awọn iwe ajako ori ayelujara. Awọn julọ gbajumo ninu wọn ni jupyter.

Awọn ile-ikawe

Eyi ni atokọ (ti kii ṣe ailagbara) ti awọn ile-ikawe ikẹkọ ẹrọ:

  • Nọmba - package ipilẹ fun awọn iṣiro to peye.
  • pandas - awọn ẹya data iṣẹ ṣiṣe giga ati awọn irinṣẹ itupalẹ data.
  • matplotlib - ẹda ti awọn aworan.
  • omi okun - data iworan da lori matplotlib.
  • Sklearn - ẹrọ eko awọn ọna.
  • XGBoost - awọn algoridimu ikẹkọ ẹrọ laarin ilana ti ilana imudara gradient.
  • Gensim - NLP.
  • Keras - nkankikan nẹtiwọki.
  • sisan tensor - Syeed kan fun ṣiṣẹda awọn awoṣe ikẹkọ ẹrọ.
  • PyTorch jẹ ipilẹ kan fun ṣiṣẹda awọn awoṣe ikẹkọ ẹrọ, lojutu lori Python.
  • Nyoka - PMML lati ọpọlọpọ awọn awoṣe.

Awọn imọ-ẹrọ AI / ML jẹ ki iṣowo ṣiṣẹ daradara ati ibaramu. Pẹlupẹlu, loni awọn imọ-ẹrọ wọnyi ti di irọrun lati dagbasoke ati imuse. Bẹrẹ kikọ ẹkọ nipa awọn imọ-ẹrọ AI/ML ati bii wọn ṣe le ṣe iranlọwọ fun eto rẹ lati dagba.

eto

Awọn ọna pupọ lo wa lati fi sori ẹrọ ati lo Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Lo aworan kan lati DockerHub
    • Ṣẹda irisi tirẹ

Laibikita ọna fifi sori ẹrọ, iwọ yoo nilo koodu orisun. Ibi kan ṣoṣo lati ṣe igbasilẹ koodu naa ni tu iwe. O ni awọn idasilẹ iduroṣinṣin ti idanwo, kan mu eyi tuntun. Ni akoko ti o jẹ 0.8, ṣugbọn lori akoko nibẹ ni yio je titun. Maṣe ṣe oniye / ṣe igbasilẹ ibi ipamọ, ṣe igbasilẹ idasilẹ tuntun.

OS

Ti o ba nfi Python Gateway sori ẹrọ ẹrọ, lẹhinna akọkọ (laibikita ẹrọ ṣiṣe) o nilo lati fi Python sori ẹrọ. Fun eyi:

  1. Fi Python 3.6.7 64 bit sori ẹrọ. A ṣe iṣeduro lati fi Python sori ẹrọ ni itọsọna aiyipada.
  2. Fi sori ẹrọ module dill: pip install dill.
  3. Ṣe igbasilẹ koodu Nkankan (ie. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) si eyikeyi agbegbe pẹlu awọn ọja. Ni ọran ti o fẹ agbegbe ti o wa lati ṣe atilẹyin awọn ọja, ṣiṣe: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Ibi ipe DLL/SO/DYLIB si folda bin Apeere InterSystems IRIS rẹ. Faili ile-ikawe gbọdọ wa ni ọna ti o pada write ##class(isc.py.Callout).GetLib().

Windows

  1. Rii daju pe oniyipada ayika PYTHONHOME ojuami Python 3.6.7.
  2. Rii daju pe oniyipada eto ayika jẹ PATH ni a oniyipada PYTHONHOME (tabi awọn liana ti o ntokasi si).

Lainos (Debian/Ubuntu)

  1. Ṣayẹwo pe oniyipada ayika jẹ PATH ni ninu /usr/lib и /usr/lib/x86_64-linux-gnu. Lo faili /etc/environment lati ṣeto awọn oniyipada ayika.
  2. Ni irú ti awọn aṣiṣe undefined symbol: _Py_TrueStruct ṣeto eto PythonLib. tun ni Ṣiṣe apakan Laasigbotitusita wa.

Mac

  1. Lọwọlọwọ Python 3.6.7 nikan ni atilẹyin Python.org. Ṣayẹwo oniyipada PATH.

Ti o ba yipada awọn oniyipada ayika, tun ọja InterSystems rẹ bẹrẹ.

Docker

Lilo awọn apoti ni nọmba awọn anfani:

  • Gbigbe
  • Imọlẹ
  • Idabobo
  • Imọlẹ
  • Aiyipada

Ṣayẹwo eyi jara ìwé fun alaye diẹ sii nipa lilo Docker pẹlu awọn ọja InterSystems.

Gbogbo Python Gateway kọ ti wa ni Lọwọlọwọ eiyan orisun 2019.4.

Aworan ti o ti ṣetan

Ṣiṣe: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestlati ṣe igbasilẹ ati ṣiṣẹ Python Gateway pẹlu InterSystems IRIS Community Edition. Gbogbo ẹ niyẹn.

Ṣẹda irisi tirẹ

Lati kọ aworan docker kan, ṣiṣe ni gbongbo ti ibi ipamọ: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Nipa aiyipada, aworan ti wa ni itumọ ti o da lori aworan naa store/intersystems/iris-community:2019.4.0.383.0, sibẹsibẹ o le yi eyi pada nipa siseto oniyipada kan IMAGE.
Lati kọ lati InterSystems IRIS, ṣiṣe: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:tuntun ".

Lẹhin eyi o le ṣiṣẹ aworan docker:

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

Ti o ba nlo aworan ti o da lori InterSystems IRIS Community Edition, o le fi bọtini naa silẹ.

comments

  • Ilana idanwo isc.py.test.Process fi nọmba kan ti awọn aworan pamọ si itọsọna igba diẹ. O le fẹ yi ọna yii pada si itọsọna ti a gbe soke. Lati ṣe eyi, ṣatunkọ eto naa WorkingDir pato awọn agesin liana.
  • Lati wọle si ṣiṣe ebute naa: docker exec -it irispy sh.
  • Wiwọle si Portal Management System nipasẹ wiwọle SuperUser/SYS.
  • Lati da apoti naa duro, ṣiṣe: docker stop irispy && docker rm --force irispy.

Ijẹrisi fifi sori ẹrọ

Ni kete ti o ti fi Python Gateway sori ẹrọ, o tọ lati ṣayẹwo pe o n ṣiṣẹ. Ṣiṣẹ koodu yii ni ebute InterSystems IRIS:

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

Abajade yẹ ki o jẹ: HELLO - Python ayípadà iye x. Ti o ba ti pada ipo sc jẹ aṣiṣe tabi var ofo, ṣayẹwo Readme - Laasigbotitusita apakan.

API

Python Gateway ti fi sori ẹrọ ati pe o ti rii daju pe o ṣiṣẹ. O to akoko lati bẹrẹ lilo rẹ!
Ni wiwo akọkọ si Python ni isc.py.Main. O funni ni awọn ẹgbẹ atẹle ti awọn ọna (gbogbo pada %Status):

  • Code ipaniyan
  • Gbigbe data
  • Iranlọwọ

Code ipaniyan

Awọn ọna wọnyi gba ọ laaye lati ṣiṣẹ koodu Python lainidii.

SimpleString

SimpleString - eyi ni ọna akọkọ. O gba 4 iyan ariyanjiyan:

  • code - laini koodu lati ṣiṣẹ. Ẹya kikọ sii laini: $c(10).
  • returnVariable - orukọ ti oniyipada lati pada.
  • serialization - bi o serialize returnVariable. 0 - okun (aiyipada), 1 - repr.
  • result - ByRef tọka si oniyipada sinu eyiti a kọ iye naa returnVariable.

Loke a ṣe:

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

Ni apẹẹrẹ yii, a fi si oniyipada Python x itumo Hello ati ki o fẹ lati pada iye ti a Python oniyipada x si ohun ObjectScript oniyipada var.

ExecuteCode

ExecuteCode jẹ ailewu ati aropo ihamọ kere si SimpleString.
Awọn laini inu Syeed InterSystems IRIS jẹ opin si awọn ohun kikọ 3, ati pe ti o ba fẹ ṣiṣẹ nkan ti koodu to gun, o nilo lati lo awọn okun.
Awọn ariyanjiyan meji gba:

  • code - ila tabi ṣiṣan ti koodu Python lati ṣiṣẹ.
  • variable - (iyan) ṣe ipinnu abajade ti ipaniyan code yi Python ayípadà.

Apẹẹrẹ lati lo:

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

Ni apẹẹrẹ yii, a ṣe isodipupo 2 nipasẹ 3 ati kọ abajade si oniyipada Python y.

Gbigbe data

Ṣe data si ati lati Python.

Python -> InterSystems IRIS

Awọn ọna mẹrin wa lati gba iye ti oniyipada Python ni InterSystems IRIS, da lori serialization ti o nilo:

  • String fun o rọrun data orisi ati n ṣatunṣe aṣiṣe.
  • Repr fun titoju o rọrun ohun ati n ṣatunṣe aṣiṣe.
  • JSON fun irọrun data ifọwọyi lori InterSystems IRIS ẹgbẹ.
  • Pickle lati fipamọ awọn nkan.

Awọn ọna wọnyi gba ọ laaye lati gba awọn oniyipada lati Python bi okun tabi ṣiṣan.

  • GetVariable(variable, serialization, .stream, useString) - gba serialization oniyipada variable в stream... Ti o ba ti a useString ni 1 ati awọn serialization ti wa ni gbe lori kan okun, ki o si a okun pada ki o si ko kan ṣiṣan.
  • GetVariableJson(variable, .stream, useString) - gba JSON serialization ti a ayípadà.
  • GetVariablePickle(variable, .stream, useString, useDill) -gba Pickle (tabi Dill) serialization ti a ayípadà.

Jẹ ká gbiyanju lati gba wa oniyipada y.

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

InterSystems IRIS -> Python

Ikojọpọ data lati InterSystems IRIS sinu Python.

  • ExecuteQuery(query, variable, type, namespace) - ṣẹda dataset (pandas dataframe tabi list) lati ibeere sql ati ṣeto si oniyipada Python variable. Apo olora isc.py gbọdọ wa ni agbegbe namespace - ibeere naa yoo ṣee ṣe nibẹ.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - èyà agbaye data global lati alabapin start si end ni Python bi iru oniyipada type: list, tabi pandas dataframe. Apejuwe ti iyan ariyanjiyan mask ati labels wa ninu iwe kilasi ati ibi ipamọ Awọn iwe aṣẹ Gbigbe data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - èyà kilasi data class lati id start si end ni Python bi iru oniyipada type: list, tabi pandas dataframe. properties - atokọ kan (yapa nipasẹ komama) ti awọn ohun-ini kilasi ti o nilo lati kojọpọ sinu ṣeto data. Awọn iboju iparada ni atilẹyin * и ?. Aiyipada - * (gbogbo ohun ini). Ohun ini %%CLASSNAME bikita.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - èyà tabili data table lati id start si end ni Python.

ExecuteQuery — gbogbo (eyikeyi ibeere SQL ti o pe yoo kọja si Python). Sibẹsibẹ, ExecuteGlobal ati awọn oniwe- wrappers ExecuteClass и ExecuteTable ṣiṣẹ pẹlu awọn nọmba kan ti awọn ihamọ. Wọn yiyara pupọ (awọn akoko 3-5 yiyara ju awakọ ODBC lọ ati awọn akoko 20 yiyara ExecuteQuery). Alaye siwaju sii ni Awọn iwe aṣẹ Gbigbe data.
Gbogbo awọn ọna wọnyi ṣe atilẹyin gbigbe data lati agbegbe eyikeyi. Apo olora isc.py gbọdọ wa ni agbegbe ibi-afẹde.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - Gbigbe awọn abajade eyikeyi ibeere SQL ti o tọ si Python. Eyi ni ọna gbigbe data ti o lọra julọ. Lo ti o ba ExecuteGlobal ati awọn oniwe- wrappers ni ko wa.

Awọn ariyanjiyan:

  • query - sql ibeere.
  • variable - orukọ ti oniyipada Python sinu eyiti a kọ data naa.
  • type - list tabi Pandas dataframe.
  • namespace - agbegbe ti ibeere naa yoo ṣe.

ṢiṣẹGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - ran a agbaye ni Python.

Awọn ariyanjiyan:

  • global - agbaye orukọ lai ^
  • variable - orukọ ti oniyipada Python sinu eyiti a kọ data naa.
  • type - list tabi Pandas dataframe.
  • start - akọkọ alabapin ti agbaye. dandan %Integer.
  • end - awọn ti o kẹhin alabapin ti awọn agbaye. dandan %Integer.
  • mask - agbaye iye boju. Boju-boju le kuru ju nọmba awọn aaye ni agbaye (ninu eyiti awọn aaye ti o wa ni ipari yoo fo). Bii o ṣe le ṣe agbekalẹ iboju-boju:
    • + kọja iye bi o ṣe jẹ.
    • - foo iye.
    • b - Iru Boolean (0 - False, gbogbo awọn iyokù - True).
    • d - Ọjọ (lati $horolog, lori Windows lati 1970, lori Linux lati 1900).
    • t - Time ($ horolog, aaya lẹhin ti Midnight).
    • m - Timetamp (okun ọna kika ODUN-osù-ọjọ wakati: iseju: keji).
  • labels - % Akojọ awọn orukọ ọwọn. Ni igba akọkọ ti ano ni awọn orukọ ti awọn alabapin.
  • namespace - agbegbe ti ibeere naa yoo ṣe.

ExecuteClass

Fi ipari si ExecuteGlobal. Da lori asọye kilasi, šetan ipe kan ExecuteGlobal o si pè e.

ExecuteClass(class, variable, type, start, end, properties, namespace) - kọja data kilasi ni Python.

Awọn ariyanjiyan:

  • class - kilasi orukọ
  • variable - orukọ ti oniyipada Python sinu eyiti a kọ data naa.
  • type - list tabi Pandas dataframe.
  • start - ibẹrẹ ID.
  • end - ik id
  • properties - atokọ kan (yapa nipasẹ komama) ti awọn ohun-ini kilasi ti o nilo lati kojọpọ sinu ṣeto data. Awọn iboju iparada ni atilẹyin * и ?. Aiyipada - * (gbogbo ohun ini). Ohun ini %%CLASSNAME bikita.
  • namespace - agbegbe ti ibeere naa yoo ṣe.

Gbogbo awọn ohun-ini ti kọja bi o ṣe jẹ ayafi awọn ohun-ini iru %Date, %Time, %Boolean и %TimeStamp - wọn yipada si awọn kilasi Python ti o baamu.

ExecuteTable

Fi ipari si ExecuteClass. Tumọ orukọ tabili sinu orukọ kilasi ati awọn ipe ExecuteClass. Ibuwọlu:

ExecuteTable(table, variable, type, start, end, properties, namespace) - gbigbe data tabili si Python.

Awọn ariyanjiyan:

  • table - tabili orukọ.
    Gbogbo awọn ariyanjiyan miiran ti kọja bi o ṣe jẹ ExecuteClass.

Awọn akọsilẹ

  • ExecuteGlobal, ExecuteClass и ExecuteTable ṣiṣẹ se sare.
  • ExecuteGlobal 20 igba yiyara ju ExecuteQuery lori awọn eto data nla (akoko gbigbe> 0.01 aaya).
  • ExecuteGlobal, ExecuteClass и ExecuteTable ṣiṣẹ lori agbaye pẹlu eto yii: ^global(key) = $lb(prop1, prop2, ..., propN) nibi ti key - odidi kan.
  • fun ExecuteGlobal, ExecuteClass и ExecuteTable atilẹyin ibiti o ti iye %Date ni ibamu si ibiti mktime ati da lori OS (windowsỌdun 1970-01-01. linux 1900-01-01, mac). Lo %TimeStamplati gbe data ni ita ibiti o wa tabi lo pandas dataframe nitori eyi jẹ aropin-nikan.
  • fun ExecuteGlobal, ExecuteClass и ExecuteTable gbogbo awọn ariyanjiyan ayafi orisun data (agbaye, kilasi tabi tabili) ati oniyipada jẹ iyan.

Awọn apẹẹrẹ

Idanwo kilasi isc.py.test.Eniyan ni ọna ti n ṣe afihan gbogbo awọn aṣayan gbigbe data:

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)

Pe ọna naa do ##class(isc.py.test.Person).Test() lati wo bi gbogbo awọn ọna gbigbe data ṣiṣẹ.

Awọn ọna Iranlọwọ

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - gba alaye nipa oniyipada: boya o ti wa ni telẹ, awọn oniwe-kilasi ati serialization ipari.
  • GetVariableDefined(variable, .defined) - boya oniyipada ti wa ni asọye.
  • GetVariableType(variable, .type) - gba kilasi ti oniyipada.
  • GetStatus() - gba ki o si yọ awọn ti o kẹhin sile lori Python ẹgbẹ.
  • GetModuleInfo(module, .imported, .alias) - gba module oniyipada ati akowọle ipo.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - gba alaye nipa iṣẹ naa.

Ibaraṣepọ

O ti kọ bi o ṣe le pe Python Gateway lati ebute, ni bayi jẹ ki a bẹrẹ lilo ni iṣelọpọ. Ipilẹ fun ibaraenisepo pẹlu Python ni ipo yii jẹ isc.py.ens.Operation. O gba wa laaye:

  • Ṣiṣẹ koodu ni Python
  • Fipamọ/Mu pada ọrọ ọrọ Python pada
  • Ṣe igbasilẹ ati gba data lati Python

Ni ipilẹ, iṣẹ Python kan jẹ wiwu lori isc.py.Main. Isẹ isc.py.ens.Operation pese agbara lati ṣe ajọṣepọ pẹlu ilana Python lati awọn ọja InterSystems IRIS. Awọn ibeere marun ni atilẹyin:

  • isc.py.msg.ExecutionRequest lati ṣiṣẹ koodu Python. Pada isc.py.msg.ExecutionResponse pẹlu abajade ipaniyan ati awọn iye ti awọn oniyipada ti o beere.
  • isc.py.msg.StreamExecutionRequest lati ṣiṣẹ koodu Python. Pada isc.py.msg.StreamExecutionResponse abajade ti ipaniyan ati awọn iye ti awọn oniyipada ti a beere. Afọwọṣe isc.py.msg.ExecutionRequest, ṣugbọn gba ati ki o pada awọn ṣiṣan dipo awọn gbolohun ọrọ.
  • isc.py.msg.QueryRequest lati ṣe atagba abajade ti ṣiṣe ibeere SQL kan. Pada Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest fun a kọja agbaye / kilasi / data tabili. Pada Ens.Response.
  • isc.py.msg.SaveRequest lati ṣafipamọ ọrọ Python. Pada Ens.StringResponse pẹlu o tọ ID.
  • isc.py.msg.RestoreRequest lati mu pada ọrọ Python pada.

    Yato si, isc.py.ens.Operation ni awọn eto meji:

    • Initializer - yiyan kilasi ti o ṣe imuse wiwo isc.py.init.Abstract. O le ṣee lo lati fifuye awọn iṣẹ, modulu, kilasi, ati be be lo. O ti ṣiṣẹ ni ẹẹkan nigbati ilana naa ba bẹrẹ.
    • PythonLib - (Lainos nikan) ti o ba ri awọn aṣiṣe nigba ikojọpọ, ṣeto iye rẹ si libpython3.6m.so tabi paapaa ni ọna kikun si ile-ikawe Python.

Ṣiṣẹda awọn ilana iṣowo

Awọn kilasi meji wa ti o dẹrọ idagbasoke awọn ilana iṣowo:

  • isc.py.ens.ProcessUtils gba ọ laaye lati yọ awọn alaye jade lati awọn iṣẹ ṣiṣe pẹlu iyipada oniyipada.
  • isc.py.util.BPEmulator jẹ ki o rọrun lati ṣe idanwo awọn ilana iṣowo pẹlu Python. O le ṣe ilana iṣowo kan (awọn ẹya Python) ni ilana lọwọlọwọ.

Iyipada Ayipada

Gbogbo owo lakọkọ jogun lati isc.py.ens.ProcessUtils, le lo ọna naa GetAnnotation(name) lati gba iye asọye aṣayan iṣẹ-ṣiṣe nipasẹ orukọ rẹ. Apejuwe iṣẹ-ṣiṣe le ni awọn oniyipada ti yoo ṣe iṣiro lori InterSystems IRIS ẹgbẹ ṣaaju ki o to kọja si Python. Eyi ni sintasi fun iyipada oniyipada:

  • ${class:method:arg1:...:argN} - ọna ipe
  • #{expr} - ṣiṣẹ koodu ni ede ObjectScript.

Apeere kan wa ninu ilana iṣowo idanwo isc.py.test.Process, fun apẹẹrẹ, ni aṣayan iṣẹ-ṣiṣe Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Ninu apẹẹrẹ yii:

  • #{process.WorkDirectory} pada ohun-ini WorkDirectory ti nkan naa process, eyi ti o jẹ ẹya apẹẹrẹ ti awọn kilasi isc.py.test.Process awon. lọwọlọwọ owo ilana.
  • ${%PopulateUtils:Integer:1:100} Awọn ipe ọna kan Integer kilasi %PopulateUtils, awọn ariyanjiyan ti o kọja 1 и 100, pada a ID odidi ni ibiti 1...100.

Idanwo ilana iṣowo

Awọn ọja idanwo ati awọn ilana iṣowo idanwo wa nipasẹ aiyipada gẹgẹbi apakan ti Python Gateway. Lati lo wọn:

  1. Ninu ebute OS, ṣiṣẹ: pip install pandas matplotlib seaborn.
  2. Ninu ebute InterSystems IRIS, ṣiṣẹ: do ##class(isc.py.test.CannibalizationData).Import() lati kun data idanwo.
  3. Awọn ọja ifilọlẹ isc.py.test.Production.
  4. Firanṣẹ iru ibeere Ens.Request в isc.py.test.Process.

Jẹ ki a wo bi gbogbo rẹ ṣe n ṣiṣẹ papọ. Ṣii isc.py.test.Process ninu olootu BPL:

Python Gateway ni InterSystems IRIS

Code ipaniyan

Ipenija pataki julọ ni ṣiṣe koodu Python:

Python Gateway ni InterSystems IRIS

Ibeere ti a lo isc.py.msg.ExecutionRequest, eyi ni awọn ohun-ini rẹ:

  • Code - Python koodu.
  • SeparateLines - boya lati pin koodu si awọn ila fun ipaniyan. $c(10) (n) ti wa ni lo lati pàla awọn gbolohun ọrọ. Jọwọ ṣe akiyesi pe ko ṣe iṣeduro lati ṣe ilana gbogbo ifiranṣẹ ni ẹẹkan, iṣẹ yii jẹ ipinnu lati ṣiṣẹ nikan def ati iru multiline expressions. Aiyipada 0.
  • Variables - atokọ ti o ya sọtọ ti koma ti awọn oniyipada ti yoo ṣafikun si idahun naa.
  • Serialization — Bawo ni lati serialize awọn oniyipada ti a fẹ lati pada. Awọn aṣayan: Str, Repr, JSON, Pickle и Dill, aiyipada Str.

Ninu ọran wa, a ṣeto ohun-ini nikan Code, nitorina gbogbo awọn ohun-ini miiran lo awọn iye aiyipada. A ṣeto rẹ nipa pipe process.GetAnnotation("Import pandas"), eyi ti ni asiko asiko yi da ohun annotation lẹhin ayípadà aropo ti a ti ṣe. Lẹhin ti gbogbo, awọn koodu import pandas as pd yoo kọja si Python. GetAnnotation le jẹ iwulo fun gbigba awọn iwe afọwọkọ Python laini pupọ, ṣugbọn ko si awọn ihamọ lori ọna yii ti gbigba koodu. O le ṣeto ohun-ini naa Code ni eyikeyi ọna rọrun fun o.

Ngba Awọn iyipada

Miiran awon ipenija lilo isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway ni InterSystems IRIS

O ṣe iṣiro Matrix Ibaṣepọ ni ẹgbẹ Python ati jade oniyipada naa corrmat pada si InterSystems IRIS ni ọna kika JSON nipa tito awọn ohun-ini ibeere:

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

A le rii awọn abajade ni Trace Visual:

Python Gateway ni InterSystems IRIS

Ati pe ti a ba nilo iye yii ninu BP, a le gba bii eyi: callresponse.Variables.GetAt("corrmat").

Gbigbe data

Nigbamii, jẹ ki a sọrọ nipa gbigbe data lati InterSystems IRIS si Python; gbogbo awọn ibeere fun gbigbe data ṣe imuse wiwo naa isc.py.msg.DataRequesteyiti o pese awọn ohun-ini wọnyi:

  • Variable - oniyipada Python sinu eyiti a kọ data.
  • Type - oniyipada iru: dataframe (pandas dataframe) tabi list.
  • Namespace - agbegbe ti a gba data. Apo olora isc.py yẹ ki o wa ni agbegbe yii. Eyi le jẹ agbegbe laisi atilẹyin ọja.

Da lori wiwo yii, awọn kilasi mẹrin ti awọn ibeere ni imuse:

  • isc.py.msg.QueryRequest - ṣeto ohun ini Query lati firanṣẹ ibeere SQL kan.
  • isc.py.msg.ClassRequest - ṣeto ohun ini Class lati kọja data kilasi.
  • isc.py.msg.TableRequest - ṣeto ohun ini Table lati gbe data tabili.
  • isc.py.msg.GlobalRequest - ṣeto ohun ini Global fun agbaye data gbigbe.

Ninu ilana idanwo, wo iṣẹ naa RAWnibo isc.py.msg.QueryRequest han ni igbese.

Python Gateway ni InterSystems IRIS

Nfipamọ / mimu-pada sipo ọrọ Python

Lakotan, a le fipamọ ipo Python ni InterSystems IRIS, lati ṣe eyi a yoo firanṣẹ isc.py.msg.SaveRequest pẹlu awọn ariyanjiyan:

  • Mask - Awọn oniyipada nikan ti o baamu iboju-boju ti wa ni fipamọ. Atilẹyin * и ?... Apẹẹrẹ: "Data*, Figure?". Aiyipada *.
  • MaxLength - Awọn ti o pọju ipari ti awọn ti o ti fipamọ ayípadà. Ti o ba ti serialization ti a ayípadà gun, o yoo wa ni bikita. Ṣeto si 0 lati gba awọn oniyipada ti eyikeyi ipari. Aiyipada $$$MaxStringLength.
  • Name - Orukọ ọrọ (aṣayan).
  • Description - Apejuwe ti o tọ (iyan).

Awọn ipadabọ Ens.StringResponse с Id ti o ti fipamọ o tọ. Ninu ilana idanwo, wo iṣẹ naa Save Context.

Jẹmọ ìbéèrè isc.py.msg.RestoreRequest kojọpọ agbegbe lati InterSystems IRIS sinu Python:

  • ContextId - o tọ idamo.
  • Clear - ko o tọ ṣaaju ki o to mu pada.

Iwe Jupyter Jupyter

Iwe Jupyter Jupyter jẹ ohun elo oju opo wẹẹbu orisun ṣiṣi ti o fun ọ laaye lati ṣẹda ati gbejade awọn iwe ajako ti o ni koodu, awọn iwoye, ati ọrọ ninu. Python Gateway gba ọ laaye lati wo ati satunkọ awọn ilana BPL ni irisi Iwe akiyesi Jupyter kan. Jọwọ ṣe akiyesi pe adaṣe Python 3 deede ti lo lọwọlọwọ.

Ifaagun yii dawọle pe awọn asọye ni koodu Python ati lilo awọn orukọ iṣẹ ṣiṣe bi awọn akọle iṣaaju. O ṣee ṣe ni bayi lati ṣe agbekalẹ awọn ilana iṣowo PythonGateway ni Jupyter Notebook. Eyi ni ohun ti o ṣee ṣe:

  • Ṣẹda awọn ilana iṣowo tuntun
  • Pa awọn ilana iṣowo rẹ
  • Ṣẹda titun akitiyan
  • Yi awọn iṣẹ-ṣiṣe pada
  • Pa awọn iṣẹ-ṣiṣe rẹ

Nibi demo fidio. Ati awọn sikirinisoti diẹ:

Explorer ilana

Python Gateway ni InterSystems IRIS

Olootu ilana

Python Gateway ni InterSystems IRIS

eto

  1. Iwọ yoo nilo InterSystems IRIS 2019.2+.
  2. Fi PythonGateway v0.8+ sori ẹrọ (beere nikan isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Ṣe imudojuiwọn koodu ObjectScript lati ibi ipamọ.
  4. Ṣe do ##class(isc.py.util.Jupyter).Install() ki o si tẹle awọn ilana.

Iwe akosilẹ.

awari

MLToolkit jẹ eto awọn irinṣẹ ti ibi-afẹde rẹ ni lati darapo awọn awoṣe ati agbegbe iṣowo ki awọn awoṣe ti a ṣe le ni irọrun lo taara ni awọn ilana iṣowo rẹ. Python Gateway jẹ apakan ti MLToolkit ati pese isọpọ pẹlu ede Python, gbigba ọ laaye lati ṣe agbekalẹ eyikeyi awọn algoridimu ikẹkọ ẹrọ ti a ṣẹda ni Python (agbegbe akọkọ fun ọpọlọpọ awọn onimọ-jinlẹ data), lo ọpọlọpọ awọn ile-ikawe ti a ti ṣetan lati ṣẹda adaṣe ni iyara, itupalẹ roboti AI / Awọn solusan ML lori Syeed InterSystems IRIS.

jo

MLToolkit

Ẹgbẹ olumulo MLToolkit jẹ ibi ipamọ GitHub ikọkọ ti a ṣẹda gẹgẹbi apakan ti ajo InterSystems ajọ GitHub. O ti pinnu fun awọn olumulo ita ti o fi sori ẹrọ, kọ ẹkọ, tabi ti nlo awọn paati MLToolkit tẹlẹ, pẹlu Python Gateway. Ẹgbẹ naa ni nọmba ti awọn ọran imuse (pẹlu koodu orisun ati data idanwo) ni awọn aaye ti titaja, iṣelọpọ, oogun ati ọpọlọpọ awọn ile-iṣẹ miiran. Lati darapọ mọ Ẹgbẹ Olumulo Ohun elo Irinṣẹ ML, jọwọ fi imeeli kukuru ranṣẹ si adirẹsi atẹle yii: [imeeli ni idaabobo] ki o si fi alaye wọnyi sinu lẹta rẹ:

  • GitHub orukọ olumulo
  • Eto (o ṣiṣẹ tabi iwadi)
  • Ipo (ipo rẹ gangan ninu ajo rẹ, boya "Akeko" tabi "Ominira").
  • orilẹ-ede

Fun awọn ti o ti ka nkan naa ti o nifẹ si awọn agbara ti InterSystems IRIS gẹgẹbi ipilẹ kan fun idagbasoke tabi gbigbalejo oye atọwọda ati awọn ẹrọ ikẹkọ ẹrọ, a pe ọ lati jiroro awọn oju iṣẹlẹ ti o ṣeeṣe ti o nifẹ si ile-iṣẹ rẹ. A yoo ni idunnu lati ṣe itupalẹ awọn iwulo ti ile-iṣẹ rẹ ati pinnu ni apapọ eto iṣe kan; Adirẹsi imeeli olubasọrọ ti ẹgbẹ amoye AI / ML wa - [imeeli ni idaabobo].

orisun: www.habr.com

Fi ọrọìwòye kun