Python Gateway nan InterSystems IRIS

Atik sa a se sou Python Gateway, yon pwojè kominote sous louvri pou platfòm done InterSystems IRIS la. Pwojè sa a pèmèt ou òkestre nenpòt algoritm aprantisaj machin ki te kreye nan Python (anviwònman prensipal la pou anpil Syantis Done), sèvi ak anpil bibliyotèk pare pou kreye byen vit solisyon AI / ML adaptive, robotik sou platfòm InterSystems IRIS la. Nan atik sa a, mwen pral montre w kouman InterSystems IRIS ka òkestre pwosesis Python, fè transfè done efikas nan de-fason, epi kreye pwosesis biznis entelijan.

Plan

  1. Entwodiksyon.
  2. Zouti.
  3. Enstalasyon
  4. API.
  5. Entèoperabilite.
  6. Kaye Jupyter.
  7. Konklizyon yo.
  8. Lyen.
  9. M.L.Toolkit.

Entwodiksyon

Python se yon wo nivo, langaj pwogram jeneral ki konsantre sou amelyore pwodiktivite pwomotè ak lizibilite kòd. Nan seri atik sa a, mwen pral pale sou posiblite pou itilize lang Python sou platfòm InterSystems IRIS la, alòske atik sa a konsantre prensipalman se itilizasyon Python kòm lang pou kreye ak aplike modèl aprantisaj machin.

Aprantisaj machin (ML) se yon klas nan metòd entèlijans atifisyèl, karakteristik nan ki se pa solisyon an dirèk nan yon pwoblèm, men aprantisaj nan pwosesis pou rezoud anpil pwoblèm menm jan an.

Algoritm aprantisaj machin ak modèl yo ap vin pi plis ak pi komen. Gen anpil rezon pou sa, men li tout vini ak aksè, senplisite, ak reyalize rezilta pratik. Èske gwoupman oswa menm modèl rezo neral se yon nouvo teknoloji?

Natirèlman pa, men sèjousi pa gen okenn nesesite pou ekri dè santèn de milye de liy kòd pou kouri yon modèl, ak depans pou kreye ak itilize modèl yo ap vin pi piti ak pi piti.

Zouti yo ap evolye - alòske nou pa gen zouti AI/ML ki oryante totalman GUI, pwogrè nou te wè ak anpil lòt klas sistèm enfòmasyon tankou BI (soti nan ekri kòd pou itilize kad ak solisyon configurable oryante GUI), yo wè tou. nan zouti kreyasyon AI/ML. Nou deja pase etap ekri kòd e jodi a nou itilize kad pou bati ak fòmasyon modèl.

Lòt amelyorasyon, tankou kapasite pou difize yon modèl pre-antre kote itilizatè final la dwe tou senpleman fini fòmasyon modèl la sou done espesifik yo, tou fè li pi fasil yo kòmanse aplike aprantisaj machin. Pwogrè sa yo fè li pi fasil pou aprann aprantisaj machin, tou de pou pwofesyonèl yo ak pou konpayi yo an jeneral.

Nan lòt men an, nou kolekte pi plis ak plis done. Avèk yon platfòm done inifye tankou InterSystems IRIS, tout enfòmasyon sa yo ka prepare imedyatman epi itilize kòm opinyon pou modèl aprantisaj machin.

Avèk tranzisyon an nan nwaj la, lanse pwojè AI/ML pi fasil pase tout tan. Nou ka sèlman konsome resous nou bezwen yo. Anplis, gras a paralelizasyon platfòm nwaj yo ofri, nou ka sove tan gaspiye.

Men, e rezilta yo? Sa a se kote bagay yo vin pi konplike. Gen anpil zouti pou bati modèl, ke mwen pral diskite pwochen. Bati yon bon modèl pa fasil, men kisa kap vini? Pwofite nan itilizasyon modèl la pa yon biznis se tou yon travay ki pa trivial. Rasin nan pwoblèm nan se separasyon nan chaj travay analyse ak tranzaksyon ak modèl done. Lè nou fòme yon modèl, anjeneral nou fè li sou done istorik. Men, plas la pou modèl la konstwi se nan pwosesis done tranzaksyon. Ki sa ki bon se pi bon modèl la deteksyon tranzaksyon fwod si nou kouri li yon fwa pa jou? SCAMMERS yo gen lontan depi kite ak lajan an. Nou bezwen fòme modèl la sou done istorik, men nou bezwen tou aplike li an tan reyèl sou nouvo done k ap fèk ap rantre pou pwosesis biznis nou yo ka aji selon prediksyon modèl la fè.

ML Toolkit se yon bwat zouti ki fè sa: pote modèl ansanm ak yon anviwònman tranzaksyon pou modèl ou bati yo ka fasil pou itilize dirèkteman nan pwosesis biznis ou. Python Gateway se yon pati nan ML Toolkit la epi li bay entegrasyon ak lang Python (menm jan ak R Gateway, yo fè pati ML Toolkit la bay entegrasyon ak lang R).

Zouti

Anvan nou kontinye, mwen ta renmen dekri kèk zouti Python ak bibliyotèk ke nou pral itilize pita.

Teknoloji

  • Python se yon langaj pwogram ki entèprete, pou objektif jeneral, wo nivo. Avantaj prensipal lang nan se yon bibliyotèk gwo bibliyotèk matematik, ML ak AI. Menm jan ak ObjectScript, li se yon lang ki oryante objè, men tout bagay defini dinamik, pa estatik. Epitou tout bagay se yon objè. Atik pita yo sipoze yon abitye pasan ak lang nan. Si ou vle kòmanse aprann, mwen rekòmande kòmanse avèk dokiman.
  • Pou pwochen egzèsis nou yo, mete Python 3.6.7 64bit.
  • IDE: mwen itilize PyCharm, men an jeneral много. Si w ap itilize Atelier, gen yon plugin Eclipse pou devlopè Python. Si w ap itilize VS Code, Lè sa a, gen yon ekstansyon Python.
  • Kaye: Olye de yon IDE, ou ka ekri ak pataje scripts ou yo nan kaye sou entènèt. Ki pi popilè nan yo se jupyter.

Bibliyotèk

Men yon lis (pasyèl) bibliyotèk aprantisaj machin:

  • Nuppy - yon pake fondamantal pou kalkil egzak.
  • Panda — estrikti done segondè pèfòmans ak zouti analiz done.
  • matplotlib - Kreyasyon tablo yo.
  • seaborn - vizyalizasyon done ki baze sou matplotlib.
  • Sklearn — metòd aprantisaj machin.
  • XGBoost — algoritm aprantisaj machin nan metodoloji Gradient Boosting la.
  • Gensim — NLP.
  • Keras - rezo neral.
  • koule tensor se yon platfòm pou kreye modèl aprantisaj machin.
  • PyTorch se yon platfòm pou kreye modèl aprantisaj machin ki konsantre sou Python.
  • Nyoka - PMML soti nan modèl divès kalite.

Teknoloji AI/ML fè biznis pi efikas ak adaptab. Anplis, jodi a teknoloji sa yo ap vin pi fasil pou devlope ak aplike. Kòmanse aprann sou teknoloji AI/ML ak kijan yo ka ede òganizasyon w grandi.

Enstalasyon

Gen plizyè fason pou enstale ak itilize Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Koupre
    • Sèvi ak imaj ki soti nan DockerHub
    • Kreye pwòp gade ou

Kèlkeswa metòd enstalasyon an, w ap bezwen kòd sous la. Sèl kote pou telechaje kòd la se degaje paj. Li gen tès degaje ki estab, jis gen tan pwan yon sèl nan dènye. Nan moman sa a li se 0.8, men apre yon tan pral gen nouvo. Pa klonaj / telechaje depo a, telechaje dènye lage a.

OS

Si w ap enstale Python Gateway sou yon sistèm opere, an premye (kèlkeswa sistèm operasyon an) w ap bezwen enstale Python. Pou sa:

  1. Enstale Python 3.6.7 64 bit. Li rekòmande pou enstale Python nan anyè default la.
  2. Enstale modil la dill: pip install dill.
  3. Telechaje kòd ObjectScript la (i.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) nan nenpòt zòn ak pwodwi yo. Nan ka ou vle yon zòn ki egziste deja sipòte pwodwi yo, kouri: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Mete rele DLL/SO/DYLIB nan katab bin egzanp InterSystems IRIS ou a. Fichye bibliyotèk la dwe disponib nan chemen an retounen write ##class(isc.py.Callout).GetLib().

Windows

  1. Asire w ke varyab anviwònman an se PYTHONHOME lonje dwèt sou Python 3.6.7.
  2. Asire w ke varyab anviwònman sistèm lan se PATH gen yon varyab PYTHONHOME (oswa anyè li lonje dwèt sou).

Linux (Debian/Ubuntu)

  1. Tcheke si varyab anviwònman an se PATH gen ladan /usr/lib и /usr/lib/x86_64-linux-gnu. Sèvi ak File /etc/environment pou mete varyab anviwònman yo.
  2. Nan ka erè undefined symbol: _Py_TrueStruct mete anviwònman an PythonLib. tou nan Readme gen yon seksyon Depanaj.

Mac

  1. Kounye a sèlman python 3.6.7 sipòte soti nan python.org. Tcheke Varyab PATH.

Si ou te chanje varyab anviwònman an, rekòmanse pwodwi InterSystems ou.

Koupre

Sèvi ak resipyan gen yon kantite avantaj:

  • Portabilite
  • Efikasite
  • D '
  • légèreté
  • Imuabilite

Tcheke sa a yon seri atik pou plis enfòmasyon sou itilizasyon Docker ak pwodwi InterSystems.

Tout konstriksyon Python Gateway yo kounye a baze sou veso. 2019.4.

Imaj fini

Kouri: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestpou telechaje epi kouri Python Gateway ak InterSystems IRIS Community Edition. Se tout.

Kreye pwòp gade ou

Pou konstwi yon imaj docker, kouri nan rasin depo a: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Pa default, imaj la bati ki baze sou imaj la store/intersystems/iris-community:2019.4.0.383.0, sepandan ou ka chanje sa a lè w mete varyab la IMAGE.
Pou konstwi nan InterSystems IRIS kouri: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Apre sa, ou ka kouri imaj la Docker:

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

Si w ap itilize yon imaj ki baze sou InterSystems IRIS Community Edition, ou pa bezwen presize yon kle.

Kòmantè

  • Pwosesis tès la isc.py.test.Process sove yon kantite imaj nan yon anyè tanporè. Ou ka vle chanje chemen sa a nan yon anyè monte. Pou fè sa, modifye anviwònman an WorkingDir espesifye anyè a monte.
  • Pou jwenn aksè nan tèminal la, kouri: docker exec -it irispy sh.
  • Aksè nan Pòtal Jesyon Sistèm nan lè w konekte SuperUser/SYS.
  • Pou sispann yon veso, kouri: docker stop irispy && docker rm --force irispy.

Tcheke enstalasyon an

Yon fwa ou te enstale Python Gateway, li vo tcheke ke li ap travay. Kouri kòd sa a nan tèminal InterSystems IRIS la:

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

Rezilta a ta dwe HELLO - valè varyab Python la x. Si estati a retounen sc se yon erè oswa var vid, tcheke Readme—Seksyon Depanaj.

API

Python Gateway enstale epi ou verifye ke li ap travay. Tan pou w kòmanse sèvi ak li!
Koòdone prensipal la nan Python se isc.py.Main. Li ofri gwoup metòd sa yo (tout retounen %Status):

  • Kòd ekzekisyon
  • Done transfere
  • Oksilyè

Kòd ekzekisyon

Metòd sa yo pèmèt ou egzekite kòd abitrè Python.

SimpleString

SimpleString se metòd prensipal la. Li pran 4 agiman opsyonèl:

  • code se liy kòd pou egzekite. karaktè liy manje: $c(10).
  • returnVariable se non varyab pou retounen.
  • serialization - ki jan yo seri returnVariable. 0 - fisèl (default), 1 - repr.
  • result - ByRef referans a varyab kote valè a ekri returnVariable.

Pi wo a nou te fè:

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

Nan egzanp sa a, nou ap bay yon varyab Python x siyifikasyon Hello epi ou vle retounen valè yon varyab Python x nan yon varyab ObjectScript var.

ExecuteCode

ExecuteCode se yon altènatif ki pi an sekirite ak mwens restriksyon SimpleString.
Liy nan platfòm InterSystems IRIS yo limite a sa sèlman 3 karaktè, epi si ou vle egzekite yon moso kòd ki pi long, ou bezwen sèvi ak kouran.
Li pran de agiman:

  • code — yon kòd oswa yon kouran kòd Python yo dwe egzekite.
  • variable - (si ou vle) bay rezilta ekzekisyon an code varyab Python sa a.

Sijere pou itilize:

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

Nan egzanp sa a, nou miltipliye 2 pa 3 epi estoke rezilta a nan yon varyab Python y.

Done transfere

Pase done pou ale ak soti nan Python.

Python -> InterSystems IRIS

Gen 4 fason pou jwenn valè yon varyab Python nan InterSystems IRIS, tou depann de seriizasyon ou bezwen an:

  • String pou kalite done senp ak debogaj.
  • Repr pou estoke objè senp ak debogaj.
  • JSON pou manipilasyon done fasil sou bò InterSystems IRIS.
  • Pickle pou konsève pou objè yo.

Metòd sa yo pèmèt ou resevwa varyab nan Python kòm yon fisèl oswa kòm kouran.

  • GetVariable(variable, serialization, .stream, useString) - jwenn serialization varyab variable в stream. Si useString se 1 epi serializasyon an mete nan yon fisèl, Lè sa a, yon fisèl retounen, pa yon kouran.
  • GetVariableJson(variable, .stream, useString) — jwenn seri JSON yon varyab.
  • GetVariablePickle(variable, .stream, useString, useDill) -Jwenn yon serializasyon Pickle (oswa Dill) nan yon varyab.

Ann eseye jwenn varyab nou an y.

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

InterSystems IRIS -> Python

Chaje done ki soti nan InterSystems IRIS nan Python.

  • ExecuteQuery(query, variable, type, namespace) - kreye yon seri done (pandas dataframe oswa list) soti nan rechèch sql epi mete l nan varyab python variable. Sache plastik isc.py ta dwe disponib nan zòn nan namespace - demann lan pral egzekite la.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - chaje done mondyal yo global soti nan abònman start до end nan Python kòm kalite varyab type: list, oswa panda dataframe. Deskripsyon agiman si ou vle mask ak labels disponib nan dokiman klas ak depo Dokiman transfè done.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - chaje done klas yo class soti nan id start до end nan Python kòm kalite varyab type: list, oswa panda dataframe. properties — lis (separe pa vigil) pwopriyete klas yo dwe chaje nan dataset la. Mask sipòte * и ?. Default - * (tout pwopriyete). Pwopriyete %%CLASSNAME inyore.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - chaje done tab la table soti nan id start до end nan piton.

ExecuteQuery - inivèsèl (nenpòt demann SQL valab pral pase bay Python). Sepandan, ExecuteGlobal ak vlope l 'yo ExecuteClass и ExecuteTable travay ak yon kantite restriksyon. Yo pi vit (3-5 fwa pi vit pase chofè ODBC a ak 20 fwa pi vit pase ExecuteQuery). Plis enfòmasyon nan Dokiman transfè done.
Tout metòd sa yo sipòte transfè done ki sòti nan nenpòt zòn. Sache plastik isc.py dwe disponib nan zòn sib la.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - pase rezilta nenpòt demann SQL ki valab bay Python. Sa a se metòd transfè done ki pi dousman. Sèvi ak li si ExecuteGlobal ak anbalaj li yo pa disponib.

Agiman:

  • query - SQL rechèch.
  • variable - non varyab Python kote done yo ekri.
  • type - list oswa panda dataframe.
  • namespace - zòn kote demann lan pral egzekite.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - pase yon global pou Python.

Agiman:

  • global se non mondyal la san ^
  • variable - non varyab Python kote done yo ekri.
  • type - list oswa panda dataframe.
  • start — premye enskripsyon mondyal la. Nesesèman %Integer.
  • end se dènye abònman mondyal la. Nesesèman %Integer.
  • mask - mask valè mondyal yo. Mask la ka pi kout pase kantite jaden nan global la (nan ka sa a jaden yo nan fen yo pral sote). Ki jan yo fòme mask la:
    • + pase valè a jan li ye.
    • - sote valè.
    • b — Kalite booleyen (0 - False, tout rès la - True).
    • d — Dat (soti nan $horolog, sou Windows soti nan 1970, sou Linux soti nan 1900).
    • t - Tan ($horolog, segonn apre minwi).
    • m — Timestamp (ANE-MWA-JOU HOUR:MINUTE:SECOND fòma chaîne).
  • labels - %Lis non kolòn. Premye eleman an se non abònman an.
  • namespace - zòn kote demann lan pral egzekite.

ExecuteClass

vlope sou ExecuteGlobal. Prepare yon apèl ki baze sou definisyon klas la ExecuteGlobal epi li rele l.

ExecuteClass(class, variable, type, start, end, properties, namespace) - pase done klas yo bay Python.

Agiman:

  • class - non klas la
  • variable - non varyab Python kote done yo ekri.
  • type - list oswa panda dataframe.
  • start - kòmanse Id.
  • end - final id
  • properties — lis (separe pa vigil) pwopriyete klas yo dwe chaje nan dataset la. Mask sipòte * и ?. Default - * (tout pwopriyete). Pwopriyete %%CLASSNAME inyore.
  • namespace - zòn kote demann lan pral egzekite.

Tout pwopriyete yo pase jan yo ye eksepte pwopriyete kalite %Date, %Time, %Boolean и %TimeStamp - yo konvèti nan klas Python korespondan yo.

ExecuteTable

vlope sou ExecuteClass. Tradui non tab la nan yon non klas ak apèl ExecuteClass. Siyati:

ExecuteTable(table, variable, type, start, end, properties, namespace) - pase done tab nan Python.

Agiman:

  • table - non tab la.
    Tout lòt agiman yo pase jan yo ye. ExecuteClass.

Nòt

  • ExecuteGlobal, ExecuteClass и ExecuteTable travay egalman vit.
  • ExecuteGlobal 20 fwa pi vit pase ExecuteQuery sou gwo done (tan transfè> 0.01 segonn).
  • ExecuteGlobal, ExecuteClass и ExecuteTable travay sou global ak estrikti sa a: ^global(key) = $lb(prop1, prop2, ..., propN) kote key se yon nonb antye relatif.
  • Pou ExecuteGlobal, ExecuteClass и ExecuteTable ranje valè sipòte %Date koresponn ak seri a mktime epi li depann de eksplwatasyon anfenèt: 1970-01-01, Linux 1900-01-01, Mac). Sèvi ak %TimeStamppou pase done deyò ranje sa a oswa itilize panda dataframe kòm limitasyon sa a se sèlman pou lis la.
  • Pou ExecuteGlobal, ExecuteClass и ExecuteTable tout agiman eksepte sous done (global, klas oswa tab) ak varyab yo opsyonèl.

egzanp

klas tès la isc.py.test.Person gen yon metòd ki montre tout opsyon transfè done:

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)

metòd apèl do ##class(isc.py.test.Person).Test() pou wè ki jan tout metòd transfè done travay.

Metòd Èd

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - jwenn enfòmasyon sou varyab la: si wi ou non li defini, klas ak longè seri.
  • GetVariableDefined(variable, .defined) - si wi ou non varyab la defini.
  • GetVariableType(variable, .type) - jwenn klas la nan varyab la.
  • GetStatus() - jwenn epi retire dènye eksepsyon an sou bò Python.
  • GetModuleInfo(module, .imported, .alias) - jwenn modil varyab ak enpòte estati.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - jwenn enfòmasyon sou fonksyon an.

Entèoperabilite

Ou te aprann kijan pou rele Python Gateway soti nan tèminal la, kounye a ann kòmanse sèvi ak li nan pwodiksyon an. Baz pou kominike avèk Python nan mòd sa a se isc.py.ens.Operation. Li pèmèt nou:

  • Egzekite kòd Python
  • Sove/Restore kontèks Python
  • Chaje epi resevwa done ki soti nan Python

Fondamantalman, yon operasyon Pyhton se yon wrapper sou isc.py.Main. Operasyon isc.py.ens.Operation pèmèt entèraksyon ak pwosesis Python soti nan pwodwi InterSystems IRIS. Yo sipòte senk demann:

  • isc.py.msg.ExecutionRequest pou egzekite kòd Python. retounen isc.py.msg.ExecutionResponse ak rezilta ekzekisyon an ak valè varyab yo mande yo.
  • isc.py.msg.StreamExecutionRequest pou egzekite kòd Python. retounen isc.py.msg.StreamExecutionResponse rezilta nan ekzekisyon ak valè yo nan varyab yo mande yo. Analòg isc.py.msg.ExecutionRequest, men aksepte epi retounen kouran olye pou yo fisèl.
  • isc.py.msg.QueryRequest transfere rezilta a nan egzekite yon rechèch SQL. retounen Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest pou pase done mondyal/klas/tablo. retounen Ens.Response.
  • isc.py.msg.SaveRequest pou sove kontèks Python. retounen Ens.StringResponse ak kontèks ID.
  • isc.py.msg.RestoreRequest retabli kontèks Python la.

    Anplis de sa, isc.py.ens.Operation gen de paramèt:

    • Initializer - chwazi yon klas ki aplike koòdone a isc.py.init.Abstract. Li ka itilize pou chaje fonksyon, modil, klas, ak renmen an. Li egzekite yon fwa lè pwosesis la kòmanse.
    • PythonLib - (Linux sèlman) si ou wè erè bòt, mete valè li a libpython3.6m.so oswa menm nan chemen an plen nan bibliyotèk la Python.

Kreyasyon pwosesis biznis

Gen de klas ki disponib ki fasilite devlopman nan pwosesis biznis:

  • isc.py.ens.ProcessUtils pèmèt ou ekstrè anotasyon nan aktivite ak sibstitisyon varyab.
  • isc.py.util.BPEmulator fè li fasil pou teste pwosesis biznis ak Python. Li ka egzekite yon pwosesis biznis (pati Python) nan pwosesis aktyèl la.

Ranplasman varyab

Tout pwosesis biznis eritye de isc.py.ens.ProcessUtils, ka itilize metòd la GetAnnotation(name) pou jwenn valè yon anotasyon aktivite pa non li. Anòt aktivite a ka gen ladan varyab ke yo pral evalye sou bò InterSystems IRIS anvan yo pase nan Python. Men sentaks pou sibstitisyon varyab:

  • ${class:method:arg1:...:argN} - metòd apèl
  • #{expr} - egzekite kòd nan lang ObjectScript.

Yon egzanp disponib nan pwosesis biznis tès la isc.py.test.Process, pou egzanp, nan aktivite Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Nan egzanp sa a:

  • #{process.WorkDirectory} retounen pwopriyete WorkDirectory objè a process, ki se yon egzanp nan klas la isc.py.test.Process sa yo. pwosesis biznis aktyèl la.
  • ${%PopulateUtils:Integer:1:100} rele yon metòd Integer klas %PopulateUtils, pase agiman 1 и 100, retounen yon nonb antye relatif nan seri a 1...100.

Tès pwosesis biznis

Pwodiksyon tès la ak pwosesis biznis tès yo disponib pa default kòm yon pati nan Python Gateway la. Pou itilize yo:

  1. Nan tèminal OS kouri: pip install pandas matplotlib seaborn.
  2. Nan tèminal InterSystems IRIS la, kouri: do ##class(isc.py.test.CannibalizationData).Import() pou peple done tès yo.
  3. Lanse pwodwi yo isc.py.test.Production.
  4. Voye kalite demann Ens.Request в isc.py.test.Process.

Ann wè ki jan li tout travay ansanm. Louvri isc.py.test.Process nan editè BPL:

Python Gateway nan InterSystems IRIS

Kòd ekzekisyon

Apèl ki pi enpòtan an se ekzekisyon kòd Python:

Python Gateway nan InterSystems IRIS

Demann itilize isc.py.msg.ExecutionRequest, Men pwopriyete li yo:

  • Code - Kòd Python.
  • SeparateLines - si yo divize kòd la an liy pou ekzekisyon. $c(10) (n) yo itilize pou separe fisèl. Tanpri sonje ke li PA rekòmande pou trete tout mesaj la nan yon fwa, fonksyon sa a se sèlman pou trete def ak ekspresyon miltiliy ki sanble. Default 0.
  • Variables se yon lis varyab separe ak vigil ke yo pral ajoute nan repons lan.
  • Serialization - Ki jan yo seri varyab yo nou vle retounen. Opsyon: Str, Repr, JSON, Pickle и Dill, default Str.

Nan ka nou an, nou sèlman mete pwopriyete a Code, pou tout lòt pwopriyete yo sèvi ak valè default yo. Nou mete l kanpe lè w rele process.GetAnnotation("Import pandas"), ki nan tan exécution retounen yon annotation apre sibstitisyon varyab te fèt. Finalman kòd la import pandas as pd yo pral pase nan Python. GetAnnotation ka itil pou jwenn scripts Python milti-liy, men pa gen okenn restriksyon sou fason sa a jwenn kòd. Ou ka mete pwopriyete a Code nan nenpòt fason pratik pou ou.

Jwenn Varyab

Yon lòt defi enteresan lè l sèvi avèk isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway nan InterSystems IRIS

Li kalkile Matris Korelasyon an sou bò Python ak ekstrè varyab la corrmat tounen nan InterSystems IRIS nan fòma JSON lè w mete pwopriyete demann yo:

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

Nou ka wè rezilta yo nan tras vizyèl:

Python Gateway nan InterSystems IRIS

Men, si nou bezwen valè sa a nan BP a, li ka jwenn tankou sa a: callresponse.Variables.GetAt("corrmat").

Done transfere

Apre sa, ann pale sou transfere done ki soti nan InterSystems IRIS nan Python, tout demann transfè done aplike koòdone la. isc.py.msg.DataRequest, ki bay pwopriyete sa yo:

  • Variable se yon varyab Python kote yo ekri done yo.
  • Type - Kalite varyab: dataframe (panda dataframe) oswa list.
  • Namespace - zòn kote nou resevwa done yo. Sache plastik isc.py ta dwe disponib nan zòn sa a. Sa a ka yon zòn san sipò pwodwi.

Dapre koòdone sa a, 4 klas demann yo aplike:

  • isc.py.msg.QueryRequest - mete pwopriyete Query pou voye yon rechèch SQL.
  • isc.py.msg.ClassRequest - mete pwopriyete Class pou pase done klas yo.
  • isc.py.msg.TableRequest - mete pwopriyete Table pou pase done tab la.
  • isc.py.msg.GlobalRequest - mete pwopriyete Global transfere done globalman.

Nan pwosesis tès la, gade aktivite a RAWkote isc.py.msg.QueryRequest montre nan aksyon.

Python Gateway nan InterSystems IRIS

Sove/Restore yon Kontèks Python

Finalman, nou ka estoke kontèks Python nan InterSystems IRIS, pou fè sa, voye isc.py.msg.SaveRequest ak agiman:

  • Mask — Se sèlman varyab ki satisfè mask la sove. Sipòte * и ?... Egzanp: "Data*, Figure?"... Defo *.
  • MaxLength — Longè maksimòm varyab ki estoke a. Si serializasyon yon varyab pi long, li pral inyore. Mete sou 0 pou jwenn varyab nenpòt longè. Default $$$MaxStringLength.
  • Name — Non kontèks (si ou vle).
  • Description — Deskripsyon kontèks la (opsyonèl).

Retounen Ens.StringResponse с Id kontèks sove. Nan pwosesis tès la, gade aktivite a Save Context.

Demann ki gen rapò isc.py.msg.RestoreRequest chaje yon kontèks soti nan InterSystems IRIS nan Python:

  • ContextId se idantifyan kontèks la.
  • Clear — klè kontèks la anvan retabli.

Kaye Jupyter

Kaye Jupyter se yon aplikasyon entènèt sous louvri ki pèmèt ou kreye ak pibliye kaye ki gen kòd, vizyalizasyon, ak tèks. Python Gateway pèmèt ou wè ak modifye pwosesis BPL kòm yon kaye Jupyter. Remake byen ke ekzekitè regilye Python 3 la kounye a yo te itilize.

Ekstansyon sa a sipoze ke anotasyon yo genyen kòd Python epi sèvi ak non aktivite kòm tit anvan yo. Kounye a li posib pou devlope pwosesis biznis PythonGateway nan Jupyter Notebook. Men sa ki posib:

  • Kreye nouvo pwosesis biznis
  • Efase pwosesis biznis yo
  • Kreye nouvo aktivite
  • Chanje aktivite yo
  • Efase aktivite yo

Isit la videyo demonstrasyon. Ak kèk Ekran:

Pwosesis Explorer

Python Gateway nan InterSystems IRIS

Editè pwosesis

Python Gateway nan InterSystems IRIS

Enstalasyon

  1. W ap bezwen InterSystems IRIS 2019.2+.
  2. Enstale PythonGateway v0.8+ (mande sèlman isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Mete ajou kòd ObjectScript nan depo a.
  4. Egzekite do ##class(isc.py.util.Jupyter).Install() epi swiv envit yo.

Dokimantasyon.

Jwenn

MLToolkit se yon seri zouti ki gen pou objaktif pou konbine modèl ak yon anviwònman tranzaksyon pou modèl yo bati yo ka fasil pou itilize dirèkteman nan pwosesis biznis ou. Python Gateway se yon pati nan MLToolkit epi li bay entegrasyon ak lang Python, ki pèmèt ou òkestre nenpòt algoritm aprantisaj machin ki te kreye nan Python (anviwònman prensipal la pou anpil Syantis Done), sèvi ak anpil bibliyotèk pare pou kreye byen vit adaptive, robotik AI / analiz. Solisyon ML sou platfòm InterSystems IRIS la.

Referans

MLToolkit

Gwoup itilizatè MLToolkit la se yon depo GitHub prive ki te kreye kòm yon pati nan òganizasyon GitHub antrepriz InterSystems. Li adrese a itilizatè ekstèn ki ap enstale, aprann, oswa ki deja itilize konpozan MLToolkit, ki gen ladan Python Gateway. Gwoup la gen yon kantite ka aplike (ak kòd sous ak done tès) nan domèn maketing, fabrikasyon, medikaman ak anpil lòt endistri yo. Pou rantre nan gwoup itilizatè ML Toolkit la, tanpri voye yon imèl kout nan adrès sa a: [imèl pwoteje] epi mete enfòmasyon sa yo nan lèt ou a:

  • Non itilizatè GitHub
  • Òganizasyon (ou travay oswa etidye)
  • Pozisyon (pozisyon aktyèl ou nan òganizasyon w, swa "Elèv" oswa "Endepandan").
  • Peyi

Pou moun ki te li atik la epi ki enterese nan InterSystems IRIS kòm yon platfòm pou devlope oswa òganize entèlijans atifisyèl ak mekanis aprantisaj machin, nou envite ou diskite sou senaryo posib ki enterese antrepriz ou a. Nou pral fasilman analize bezwen yo nan antrepriz ou ak ansanm detèmine yon plan aksyon; kontakte adrès imel gwoup ekspè AI/ML nou an - [imèl pwoteje].

Sous: www.habr.com

Add nouvo kòmantè