Python Gateway mu InterSystems IRIS

Nkhaniyi ikunena za Python Gateway, pulojekiti yotseguka yamagulu a InterSystems IRIS data platform. Pulojekitiyi imakupatsani mwayi wokonza makina aliwonse ophunzirira makina opangidwa ku Python (malo akuluakulu a Asayansi ambiri a Data), gwiritsani ntchito malaibulale ambiri okonzeka kuti mupange mwachangu mayankho osinthika a AI / ML papulatifomu ya InterSystems IRIS. M'nkhaniyi, ndikuwonetsa momwe InterSystems IRIS ingakhazikitsire njira mu Python, kuyankhulana bwino ndi njira ziwiri, ndikupanga njira zamabizinesi anzeru.

Konzani

  1. Kuyamba
  2. Zida.
  3. Kukhazikitsa
  4. API.
  5. Kusagwirizana.
  6. Jupyter Notebook.
  7. Zotsatira.
  8. Maulalo.
  9. MLToolkit.

Mau oyamba

Python ndi chilankhulo chapamwamba, chomwe chimapangidwa ndi cholinga chambiri chomwe cholinga chake ndi kukulitsa zokolola za otukula komanso kuwerenga ma code. M'nkhani ino, ndikambirana za mwayi wogwiritsa ntchito Python pa InterSystems IRIS nsanja, ndi cholinga chachikulu cha nkhaniyi ndi kugwiritsa ntchito Python monga chinenero chopanga ndi kuyendetsa makina ophunzirira makina.

Kuphunzira kwa makina (ML) ndi gulu la njira zanzeru zopangira, zomwe sizili yankho lachindunji la vuto, koma kuphunzira pothetsa mavuto ambiri ofanana.

Ma algorithms ophunzirira makina ndi zitsanzo zikukhala zofala kwambiri. Pali zifukwa zambiri za izi, koma zonse zimachokera ku kupezeka, kuphweka ndi kukwaniritsa zotsatira zogwira ntchito. Kodi clustering kapena neural network modeling ndiukadaulo watsopano?

Inde ayi, koma masiku ano palibe chifukwa cholembera mizere mazana masauzande a code kuti ayendetse chitsanzo chimodzi, ndipo mtengo wopangira ndi kugwiritsa ntchito zitsanzo umakhala wochepa.

Zida zikusintha - pomwe tilibe zida zonse za GUI-centric AI / ML, kupita patsogolo komwe tawona ndi magulu ena ambiri azidziwitso, monga BI (kuchokera pakulemba ma code mpaka kugwiritsa ntchito ma frameworks ndi GUI-centric configurable solutions) , zikuwonetsedwanso mu zida zopangira AI/ML. Tadutsa kale siteji yolemba kachidindo ndipo lero timagwiritsa ntchito zomangira kupanga ndi kuphunzitsa zitsanzo.

Zosintha zina, monga kukwanitsa kugawa chitsanzo chophunzitsidwa kale kumene wogwiritsa ntchito mapeto amangoyenera kumaliza maphunziro a chitsanzo pa deta yawo yeniyeni, amathandizanso kuti ayambe kuphunzira makina. Kupita patsogolo kumeneku kumapangitsa kuphunzira makina ophunzirira kukhala kosavuta kwa akatswiri komanso makampani onse.

Kumbali ina, tikusonkhanitsa deta yowonjezereka. Ndi nsanja yolumikizana ya data ngati InterSystems IRIS, zonse izi zitha kukonzedwa nthawi yomweyo ndikugwiritsidwa ntchito ngati zolowetsa pamachitidwe ophunzirira makina.

Ndikupita kumtambo, kuyambitsa mapulojekiti a AI/ML kumakhala kosavuta kuposa kale. Tikhoza kungodya zinthu zomwe tikufuna. Komanso, chifukwa cha kufanana komwe kumaperekedwa ndi nsanja zamtambo, titha kusunga nthawi.

Koma bwanji za zotsatira zake? Apa ndi pamene zinthu zimakhala zovuta kwambiri. Pali zida zambiri zomangira zitsanzo, zomwe ndikambirana pambuyo pake. Kumanga chitsanzo chabwino sikophweka, koma nchiyani chotsatira? Kupeza phindu pogwiritsa ntchito chitsanzo cha bizinesi ndi ntchito yosakhala yaing'ono. Muzu wa vuto ndi kulekanitsidwa kwa kusanthula ndi kugulitsa ntchito, ndi zitsanzo za deta. Tikamaphunzitsa chitsanzo, nthawi zambiri timachita pa mbiri yakale. Koma malo achitsanzo chomangidwa ali mu transaction data processing. Kodi njira yabwino kwambiri yodziwira zochitika zachinyengo ndi chiyani ngati tiyiyendetsa kamodzi patsiku? Obera adachoka kale ndi ndalamazo. Tiyenera kuphunzitsa chitsanzo pazochitika zakale, koma tiyeneranso kuzigwiritsa ntchito mu nthawi yeniyeni pa deta yatsopano yomwe ikubwera kuti njira zathu zamabizinesi zitha kuchitapo kanthu pazomwe zanenedweratu ndi chitsanzocho.

ML Toolkit ndi gulu la zida zomwe cholinga chake ndi kuchita izi: kugwirizanitsa zitsanzo ndi malo ochitirako malonda kuti zitsanzo zomwe zamangidwa zizigwiritsidwa ntchito mosavuta pabizinesi yanu. Python Gateway ndi gawo la ML Toolkit ndipo imapereka kuphatikiza ndi chilankhulo cha Python (mofanana ndi momwe R Gateway, kukhala gawo la ML Toolkit kumathandizira kuphatikiza ndi chilankhulo cha R).

Chida

Tisanapitirize, ndikufuna kufotokoza zida zingapo za Python ndi malaibulale omwe tidzagwiritse ntchito pambuyo pake.

umisiri

  • Python ndi chiyankhulo chotanthauziridwa, chapamwamba, chofuna kuzigwiritsa ntchito nthawi zonse. Ubwino waukulu wa chilankhulo ndi laibulale yake yayikulu yamasamu, ML ndi malaibulale a AI. Monga ObjectScript, ndi chilankhulo chokhazikika pa chinthu, koma chilichonse chimatanthauziridwa mwamphamvu osati mokhazikika. Komanso chilichonse ndi chinthu. Zolemba zamtsogolo zimangodziwa chinenerocho. Ngati mukufuna kuyamba kuphunzira, ndikupangira kuyambira zolemba.
  • Pazochita zathu zotsatila, ikani Python 3.6.7 64 pang'ono.
  • IDE: Ndimagwiritsa ntchito PyCharm, koma kawirikawiri iwo ΠΌΠ½ΠΎΠ³ΠΎ. Ngati mugwiritsa ntchito Atelier, pali pulogalamu yowonjezera ya Eclipse ya opanga Python. Ngati mukugwiritsa ntchito VS Code, pali chowonjezera cha Python.
  • Notebook: M'malo mwa IDE, mutha kulemba ndikugawana zolemba zanu m'mabuku apaintaneti. Wotchuka kwambiri wa iwo ndi jupyter.

Malaibulale

Nawu mndandanda (wosakwanira) wama library ophunzirira makina:

  • numpy - phukusi lofunikira pakuwerengera ndendende.
  • Pandas - mapangidwe apamwamba a data ndi zida zowunikira deta.
  • Matlotlib - kupanga ma graph.
  • Nyanja -Kuwonera kwa data kutengera matplotlib.
  • Sklearn - njira zophunzirira makina.
  • XGBoost - makina ophunzirira makina mkati mwa njira yolimbikitsira gradient.
  • Gensim -NLP.
  • Keras - Neural network.
  • Kutuluka kwamatsenga - nsanja yopangira mitundu yophunzirira makina.
  • PyTorch ndi nsanja yopanga makina ophunzirira makina, okhazikika pa Python.
  • Nyoka - PMML kuchokera kumitundu yosiyanasiyana.

Tekinoloje ya AI/ML imapangitsa bizinesi kukhala yogwira mtima komanso yosinthika. Komanso, masiku ano matekinolojewa akukhala osavuta kupanga ndikugwiritsa ntchito. Yambani kuphunzira zaukadaulo wa AI/ML ndi momwe angathandizire gulu lanu kukula.

kolowera

Pali njira zingapo zoyika ndikugwiritsa ntchito Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Gwiritsani ntchito chithunzi kuchokera ku DockerHub
    • Pangani mawonekedwe anuanu

Mosasamala njira yoyika, mudzafunika gwero la code. Malo okhawo otsitsira kachidindo ndi zotulutsa tsamba. Lili ndi zotuluka zoyesedwa zokhazikika, ingotenga zatsopano. Pakalipano ndi 0.8, koma pakapita nthawi padzakhala zatsopano. Osatengera / kutsitsa zosungira, tsitsani zomwe zatulutsidwa posachedwa.

OS

Ngati mukuyika Python Gateway pa opareshoni, ndiye choyamba (mosasamala mtundu wa opaleshoni) muyenera kukhazikitsa Python. Za ichi:

  1. Ikani Python 3.6.7 64 bit. Ndibwino kuti muyike Python muzolemba zosasintha.
  2. Ikani gawo dill: pip install dill.
  3. Tsitsani nambala ya ObjectScript (ie. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) kumalo aliwonse okhala ndi zinthu. Ngati mukufuna malo omwe alipo kuti athandizire malonda, yesani: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Malo DLL/SO/DYLIB ku folda bin chitsanzo chanu cha InterSystems IRIS. Fayilo ya library iyenera kupezeka munjira yobwerera write ##class(isc.py.Callout).GetLib().

Windows

  1. Onetsetsani kusintha kwa chilengedwe PYTHONHOME amalozera ku Python 3.6.7.
  2. Onetsetsani kuti kusintha kwa chilengedwe ndi PATH lili ndi zosintha PYTHONHOME (kapena chikwatu chomwe chimalozera).

Linux (Debian/Ubuntu)

  1. Onetsetsani kuti kusintha kwa chilengedwe kuli PATH lili ndi /usr/lib ΠΈ /usr/lib/x86_64-linux-gnu. Gwiritsani ntchito fayilo /etc/environment kukhazikitsa zosintha zachilengedwe.
  2. Pakakhala zolakwika undefined symbol: _Py_TrueStruct khazikitsani zoikamo PythonLib. nawo mu Kuwerenga pali gawo la Kuthetsa Mavuto.

Mac

  1. Pakadali pano Python 3.6.7 yokha ndiyomwe imathandizidwa python.org. Onani kusintha PATH.

Ngati mwasintha zosintha zachilengedwe, yambitsaninso malonda anu a InterSystems.

Docker

Kugwiritsa ntchito makontena kuli ndi zabwino zingapo:

  • Kunyamula
  • Mphamvu
  • Kutsegula
  • Kupepuka
  • Kusasinthika

Onani izi mndandanda wa nkhani kuti mumve zambiri pakugwiritsa ntchito Docker yokhala ndi zinthu za InterSystems.

Zomanga zonse za Python Gateway pano ndizokhazikika 2019.4.

Chithunzi chokonzeka

Thamangani: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestkutsitsa ndikuyendetsa Python Gateway ndi InterSystems IRIS Community Edition. Ndizomwezo.

Pangani mawonekedwe anuanu

Kuti mupange chithunzi cha docker, thamangani muzu wankhokwe: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Mwachikhazikitso, chithunzicho chimamangidwa motengera chithunzicho store/intersystems/iris-community:2019.4.0.383.0, komabe mutha kusintha izi pokhazikitsa kusintha IMAGE.
Kumanga kuchokera ku InterSystems IRIS, thamangani: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:posachedwa ".

Pambuyo pake mutha kuyendetsa chithunzi cha docker:

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

Ngati mukugwiritsa ntchito chithunzi chozikidwa pa InterSystems IRIS Community Edition, mutha kusiya kiyi.

Comments

  • Njira yoyesera isc.py.test.Process imasunga zithunzi zingapo pamndandanda wanthawi yochepa. Mungafune kusintha njira iyi kukhala chikwatu chokwera. Kuti muchite izi, sinthani zoikamo WorkingDir kufotokozera chikwatu chokhazikitsidwa.
  • Kuti mupeze terminal run: docker exec -it irispy sh.
  • Kufikira ku System Management Portal polowa SuperUser/SYS.
  • Kuti muyimitse chotengeracho, thamangani: docker stop irispy && docker rm --force irispy.

Kutsimikizira kuyika

Mukayika Python Gateway, ndikofunikira kuyang'ana kuti ikugwira ntchito. Chitani khodi iyi mu InterSystems IRIS terminal:

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

Chotsatira chiyenera kukhala: HELLO - Mtengo wosinthika wa Python x. Ngati kubwereranso udindo sc ndi cholakwika kapena var opanda, fufuzani Readme - Gawo lazovuta.

API

Python Gateway yakhazikitsidwa ndipo mwatsimikizira kuti imagwira ntchito. Yakwana nthawi yoti muyambe kugwiritsa ntchito!
Mawonekedwe akulu ku Python ndi isc.py.Main. Imapereka njira zotsatirazi zamagulu (zonse zimabwerera %Status):

  • Kugwiritsa Ntchito Code
  • Kusamutsa deta
  • Othandizira

Kugwiritsa Ntchito Code

Njirazi zimakulolani kuti mugwiritse ntchito code ya Python mosagwirizana.

SimpleString

SimpleString - iyi ndiyo njira yaikulu. Zimatengera mikangano 4 yosankha:

  • code - mzere wa code kuti mugwire. Chikhalidwe chamzere: $c(10).
  • returnVariable - dzina la kusintha kobwerera.
  • serialization - momwe mungasankhire returnVariable. 0 - chingwe (chosasintha), 1 - repr.
  • result - ByRef akunena za kusintha komwe mtengowo unalembedwa returnVariable.

Pamwambapa tinachita:

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

Mu chitsanzo ichi, timapereka kusinthika kwa Python x tanthauzo Hello ndipo ndikufuna kubwezera mtengo wa Python variable x ku kusintha kwa ObjectScript var.

ExecuteCode

ExecuteCode ndi njira yotetezeka komanso yopanda malire SimpleString.
Mizere papulatifomu ya InterSystems IRIS imakhala ndi zilembo 3, ndipo ngati mukufuna kutulutsa kachidindo kotalikirapo, muyenera kugwiritsa ntchito ulusi.
Mfundo ziwiri zimavomerezedwa:

  • code - mzere kapena mtsinje wa Python code kuti aphedwe.
  • variable - (posankha) amapereka zotsatira za kuphedwa code kusintha kwa Python uku.

Chitsanzo chogwiritsa ntchito:

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

Mu chitsanzo ichi, timachulukitsa 2 ndi 3 ndikulemba zotsatira ku kusintha kwa Python y.

Kusamutsa deta

Pitani ndi kuchokera ku Python.

Python -> InterSystems IRIS

Pali njira zinayi zopezera mtengo wa kusintha kwa Python mu InterSystems IRIS, kutengera kusanja komwe mukufuna:

  • String kwa mitundu yosavuta ya data ndi kukonza zolakwika.
  • Repr posungira zinthu zosavuta komanso kukonza zolakwika.
  • JSON pakusintha kosavuta kwa data kumbali ya InterSystems IRIS.
  • Pickle kusunga zinthu.

Njirazi zimakulolani kuti mutenge zosinthika kuchokera ku Python ngati chingwe kapena mitsinje.

  • GetVariable(variable, serialization, .stream, useString) - kupeza serialization kusintha variable Π² stream. ngati useString ndi 1 ndipo serialization imayikidwa pa chingwe, ndiye chingwe chimabwezeretsedwa osati mtsinje.
  • GetVariableJson(variable, .stream, useString) - pezani kusanja kwa JSON kosinthika.
  • GetVariablePickle(variable, .stream, useString, useDill) -Pezani Pickle (kapena Dill) kusanja kosinthika.

Tiyeni tiyese kupeza kusintha kwathu y.

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

InterSystems IRIS -> Python

Kuyika deta kuchokera ku InterSystems IRIS kupita ku Python.

  • ExecuteQuery(query, variable, type, namespace) - imapanga dataset (pandas dataframe kapena list) kuchokera pafunso la sql ndikuyiyika ku mtundu wa Python variable. Chikwama chapulasitiki isc.py ziyenera kupezeka m'deralo namespace - pempho lidzaperekedwa pamenepo.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - amanyamula zidziwitso zapadziko lonse lapansi global kuchokera ku subscript start mpaka end mu Python ngati mtundu wosinthika type: list, kapena panda dataframe. Kufotokozera za mikangano yosankha mask ndi labels kupezeka m'kalasi zolembedwa ndi posungira Data Transfer docs.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - amanyamula zidziwitso zamakalasi class ku id start mpaka end mu Python ngati mtundu wosinthika type: list, kapena panda dataframe. properties - mndandanda (wolekanitsidwa ndi koma) wazinthu zamakalasi zomwe ziyenera kuikidwa mu seti ya data. Masks amathandizidwa * ΠΈ ?. Zofikira - * (zinthu zonse). Katundu %%CLASSNAME kunyalanyazidwa.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - amanyamula deta ya tebulo table ku id start mpaka end mu Python.

ExecuteQuery - chilengedwe chonse (funso lililonse lolondola la SQL lidzaperekedwa ku Python). Komabe, ExecuteGlobal ndi zomanga zake ExecuteClass ΠΈ ExecuteTable ntchito ndi angapo zoletsa. Amathamanga kwambiri (nthawi 3-5 mwachangu kuposa woyendetsa ODBC komanso nthawi 20 mwachangu ExecuteQuery). Zambiri pa Data Transfer docs.
Njira zonsezi zimathandizira kusamutsa deta kuchokera kudera lililonse. Chikwama chapulasitiki isc.py ziyenera kupezeka m'dera lomwe mukufuna.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - kusamutsa zotsatira za funso lililonse lolondola la SQL kupita ku Python. Iyi ndi njira yochepetsera kusamutsa deta. Gwiritsani ntchito ngati ExecuteGlobal ndipo zomangira zake palibe.

Zokangana:

  • query - sql funso.
  • variable - dzina la mtundu wa Python momwe deta imalembedwera.
  • type - list kapena Pandas dataframe.
  • namespace - malo omwe pempho lidzaperekedwa.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - kudutsa padziko lonse lapansi ku Python.

Zokangana:

  • global - dzina lapadziko lonse lapansi popanda ^
  • variable - dzina la mtundu wa Python momwe deta imalembedwera.
  • type - list kapena Pandas dataframe.
  • start - kulembetsa koyamba kwapadziko lonse lapansi. Moyenera %Integer.
  • end - zolemba zomaliza zapadziko lonse lapansi. Moyenera %Integer.
  • mask - chigoba chamtengo wapatali padziko lonse lapansi. Chigoba chikhoza kukhala chachifupi kuposa chiwerengero cha minda padziko lonse lapansi (pamenepo minda yomwe ili kumapeto idzalumphidwa). Momwe mungapangire chigoba:
    • + dutsa mtengo momwe ulili.
    • - kudumpha mtengo.
    • b - Mtundu wa Boolean (0 - False, ena onse - True).
    • d - Tsiku (kuchokera ku $horolog, pa Windows kuyambira 1970, pa Linux kuyambira 1900).
    • t - Nthawi ($ horolog, masekondi pambuyo pakati pausiku).
    • m - Chidindo chanthawi (chingwe cha YEAR-MONTH-TSIKU HOUR:MINUTE:SECOND).
  • labels - % Mndandanda wa mayina a magawo. Chinthu choyamba ndi dzina la zolembera.
  • namespace - malo omwe pempho lidzaperekedwa.

ExecuteClass

Manga pamwamba ExecuteGlobal. Kutengera tanthauzo la kalasi, akukonzekera kuyitana ExecuteGlobal namuitana.

ExecuteClass(class, variable, type, start, end, properties, namespace) - Kudutsa kwa kalasi ku Python.

Zokangana:

  • class - dzina la kalasi
  • variable - dzina la mtundu wa Python momwe deta imalembedwera.
  • type - list kapena Pandas dataframe.
  • start - ID yoyambira.
  • end - Final ID
  • properties - mndandanda (wolekanitsidwa ndi koma) wazinthu zamakalasi zomwe ziyenera kuikidwa mu seti ya data. Masks amathandizidwa * ΠΈ ?. Zofikira - * (zinthu zonse). Katundu %%CLASSNAME kunyalanyazidwa.
  • namespace - malo omwe pempho lidzaperekedwa.

Malo onse amaperekedwa monga momwe zilili kupatula mtundu wa katundu %Date, %Time, %Boolean ΠΈ %TimeStamp - amasinthidwa kukhala makalasi ofananira a Python.

ExecuteTable

Manga pamwamba ExecuteClass. Kumasulira dzina la tebulo mu dzina la kalasi ndi mafoni ExecuteClass. Siginecha:

ExecuteTable(table, variable, type, start, end, properties, namespace) - kupititsa deta ya tebulo kupita ku Python.

Zokangana:

  • table - dzina la tebulo.
    Zotsutsana zina zonse zimaperekedwa monga momwe zimakhalira ExecuteClass.

Zolemba

  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable ntchito mofanana mofulumira.
  • ExecuteGlobal 20 nthawi mwachangu kuposa ExecuteQuery pamagulu akuluakulu a data (nthawi yotumizira> masekondi 0.01).
  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable gwiritsani ntchito padziko lonse lapansi ndi dongosolo ili: ^global(key) = $lb(prop1, prop2, ..., propN) kumene key - chiwerengero chonse.
  • chifukwa ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable Thandizo lamitundu yosiyanasiyana %Date zimagwirizana ndi range mktime ndipo zimatengera OS (mawindoMbalame: 1970-01-01, Linux 1900-01-01, Mac). Gwiritsani ntchito %TimeStampkusamutsa deta kunja kwa izi kapena kugwiritsa ntchito pandas dataframe chifukwa ichi ndi malire mndandanda-okha.
  • chifukwa ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable mikangano yonse kupatula gwero la data (padziko lonse lapansi, kalasi kapena tebulo) ndi zosintha ndizosankha.

zitsanzo

Kalasi yoyesera isc.py.test.Munthu lili ndi njira yowonetsera zosankha zonse zosamutsa deta:

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)

Imbani njira do ##class(isc.py.test.Person).Test() kuti muwone momwe njira zonse zosinthira deta zimagwirira ntchito.

Njira Zothandizira

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - pezani zambiri zakusinthako: kaya kumatanthawuza, kalasi yake ndi kutalika kwake.
  • GetVariableDefined(variable, .defined) - kaya kusinthika kumatanthauzidwa.
  • GetVariableType(variable, .type) - kupeza kalasi ya variable.
  • GetStatus() - pezani ndikuchotsa chotsalira chomaliza kumbali ya Python.
  • GetModuleInfo(module, .imported, .alias) - pezani kusintha kwa ma module ndi momwe mungalowetse.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - pezani zambiri za ntchitoyi.

Kugwilizana

Mwaphunzira kuyitanitsa Python Gateway kuchokera ku terminal, tsopano tiyeni tiyambe kuyigwiritsa ntchito popanga. Maziko olumikizirana ndi Python munjira iyi ndi isc.py.ens.Operation. Zimatilola:

  • Pangani code mu Python
  • Sungani / Bwezerani nkhani ya Python
  • Kwezani ndi kulandira deta kuchokera ku Python

Kwenikweni, kugwira ntchito kwa Python ndikokwanira isc.py.Main... Opaleshoni isc.py.ens.Operation imapereka kuthekera kolumikizana ndi njira ya Python kuchokera kuzinthu za InterSystems IRIS. Mafunso asanu amathandizidwa:

  • isc.py.msg.ExecutionRequest kukhazikitsa Python code. Kubwerera isc.py.msg.ExecutionResponse ndi zotsatira zakupha komanso zosintha zomwe zafunsidwa.
  • isc.py.msg.StreamExecutionRequest kukhazikitsa Python code. Kubwerera isc.py.msg.StreamExecutionResponse zotsatira za kuphedwa ndi zikhalidwe za zosinthika zomwe zafunsidwa. Analogi isc.py.msg.ExecutionRequest, koma amavomereza ndi kubwezera mitsinje m'malo mwa zingwe.
  • isc.py.msg.QueryRequest kuti mutumize zotsatira za funso la SQL. Kubwerera Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest podutsa deta yapadziko lonse/class/table. Kubwerera Ens.Response.
  • isc.py.msg.SaveRequest kuti musunge nkhani ya Python. Kubwerera Ens.StringResponse yokhala ndi ID yachidziwitso.
  • isc.py.msg.RestoreRequest kubwezeretsanso nkhani ya Python.

    Komanso, isc.py.ens.Operation ili ndi zokonda ziwiri:

    • Initializer - kusankha kalasi yomwe imagwiritsa ntchito mawonekedwe isc.py.init.Abstract. Itha kugwiritsidwa ntchito kutsitsa ntchito, ma module, makalasi, ndi zina. Imachitidwa kamodzi ndondomeko ikayamba.
    • PythonLib - (Linux kokha) ngati muwona zolakwika mukatsitsa, ikani mtengo wake libpython3.6m.so kapena ngakhale munjira yonse yopita ku library ya Python.

Kupanga njira zamabizinesi

Pali magawo awiri omwe amathandizira kukula kwa bizinesi:

  • isc.py.ens.ProcessUtils imakulolani kuti mutenge mawu ofotokozera kuchokera kuzinthu ndikusintha kosinthika.
  • isc.py.util.BPEmulator zimapangitsa kukhala kosavuta kuyesa njira zamabizinesi ndi Python. Itha kuchita bizinesi (magawo a Python) pazomwe zikuchitika.

Kusintha kosinthika

Njira zonse zamabizinesi zotengera isc.py.ens.ProcessUtils, akhoza kugwiritsa ntchito njira GetAnnotation(name) kuti mupeze tanthauzo lachidziwitso ndi dzina lake. Zofotokozera za zochitikazo zitha kukhala ndi zosinthika zomwe zidzawerengedwe kumbali ya InterSystems IRIS isanapatsidwe ku Python. Nayi syntax ya kusintha kosinthika:

  • ${class:method:arg1:...:argN} - njira yothetsera
  • #{expr} - perekani code muchilankhulo cha ObjectScript.

Chitsanzo chimapezeka poyesa bizinesi isc.py.test.Process, mwachitsanzo, muzochita Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Mu chitsanzo ichi:

  • #{process.WorkDirectory} imabweretsa katundu wa WorkDirectory wa chinthucho process, chomwe ndi chitsanzo cha kalasi isc.py.test.Process izo. ndondomeko yamakono.
  • ${%PopulateUtils:Integer:1:100} kuyitana njira Integer kalasi %PopulateUtils, kudutsa mikangano 1 ΠΈ 100, kubweza manambala mwachisawawa pamndandanda 1...100.

Yesani ndondomeko yabizinesi

Zogulitsa zoyesa ndi njira zamabizinesi zoyesa zimapezeka mwachisawawa ngati gawo la Python Gateway. Kuwathandiza:

  1. Mu OS terminal, yesani: pip install pandas matplotlib seaborn.
  2. Mu InterSystems IRIS terminal, thamangani: do ##class(isc.py.test.CannibalizationData).Import() kuti mudzaze deta yoyesera.
  3. Launch mankhwala isc.py.test.Production.
  4. Tumizani mtundu wa pempho Ens.Request Π² isc.py.test.Process.

Tiyeni tiwone momwe zonse zimagwirira ntchito limodzi. Tsegulani isc.py.test.Process mu BPL editor:

Python Gateway mu InterSystems IRIS

Kugwiritsa Ntchito Code

Vuto lofunika kwambiri ndikuchita nambala ya Python:

Python Gateway mu InterSystems IRIS

Funso logwiritsidwa ntchito isc.py.msg.ExecutionRequest, nazi katundu wake:

  • Code - Python kodi.
  • SeparateLines - kaya kugawa codeyo kukhala mizere yokonzekera. $c(10) (n) amagwiritsidwa ntchito kusiyanitsa zingwe. Chonde dziwani kuti sikuvomerezedwa kuti mugwiritse ntchito uthenga wonse nthawi imodzi, ntchitoyi ndi yongokonzedwa def ndi mawu amitundu yambiri ofanana. Zosasintha 0.
  • Variables - mndandanda wolekanitsidwa ndi koma wa zosinthika zomwe zidzawonjezedwa ku mayankho.
  • Serialization - Momwe mungasinthire zosintha zomwe tikufuna kubwerera. Zosankha: Str, Repr, JSON, Pickle ΠΈ Dill, kusakhulupirika Str.

Kwa ife, timangoyika katundu Code, kotero zinthu zina zonse zimagwiritsa ntchito zikhalidwe zosasinthika. Timayiyika poyitana process.GetAnnotation("Import pandas"), yomwe pa nthawi yothamanga imabweretsanso ndemanga pambuyo posintha kusintha kwachitika. Pambuyo pake, kodi import pandas as pd idzaperekedwa ku Python. GetAnnotation zitha kukhala zothandiza kupeza zolemba za Python zamitundu yambiri, koma palibe zoletsa panjira iyi yopezera kachidindo. Mukhoza kukhazikitsa katundu Code m'njira iliyonse yabwino kwa inu.

Kupeza Zosintha

Chinthu chinanso chosangalatsa chogwiritsa ntchito isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway mu InterSystems IRIS

Imawerengera Correlation Matrix kumbali ya Python ndikuchotsa zosinthika corrmat kubwerera ku InterSystems IRIS mumtundu wa JSON pokhazikitsa zopempha:

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

Titha kuwona zotsatira mu Visual Trace:

Python Gateway mu InterSystems IRIS

Ndipo ngati tikufuna mtengo uwu mu BP, titha kuupeza motere: callresponse.Variables.GetAt("corrmat").

Kusamutsa deta

Kenako, tiyeni tikambirane za kusamutsa deta kuchokera ku InterSystems IRIS kupita ku Python; zopempha zonse za kusamutsa deta zimagwiritsa ntchito mawonekedwe. isc.py.msg.DataRequestzomwe zimapereka zotsatirazi:

  • Variable - Kusintha kwa Python komwe deta imalembedwera.
  • Type - Mitundu yosiyanasiyana: dataframe (pandas dataframe) kapena list.
  • Namespace - dera lomwe timalandira deta. Chikwama chapulasitiki isc.py ziyenera kupezeka m'dera lino. Awa akhoza kukhala malo opanda chithandizo chamankhwala.

Kutengera mawonekedwe awa, magulu 4 a zopempha amakwaniritsidwa:

  • isc.py.msg.QueryRequest - khazikitsani katunduyo Query kutumiza funso la SQL.
  • isc.py.msg.ClassRequest - khazikitsani katunduyo Class kupititsa deta ya kalasi.
  • isc.py.msg.TableRequest - khazikitsani katundu Table kusamutsa deta ya tebulo.
  • isc.py.msg.GlobalRequest - khazikitsani katundu Global za kusamutsa kwa data padziko lonse lapansi.

Poyesa, yang'anani ntchitoyo RAWkumene isc.py.msg.QueryRequest kuwonetsedwa mukuchita.

Python Gateway mu InterSystems IRIS

Kupulumutsa / Kubwezeretsanso Python Context

Pomaliza, titha kusunga nkhani ya Python mu InterSystems IRIS, kuti tichite izi tidzatumiza isc.py.msg.SaveRequest ndi zotsutsana:

  • Mask - Zosintha zokha zomwe zimagwirizana ndi chigoba ndizosungidwa. Zothandizidwa * ΠΈ ?. Chitsanzo: "Data*, Figure?". Zosasintha *.
  • MaxLength - Kutalika kwakukulu kwa kusintha kosungidwa. Ngati kusanja kwa kusintha kuli kotalika, sikudzanyalanyazidwa. Khazikitsani ku 0 kuti mupeze zosintha zautali uliwonse. Zosasintha $$$MaxStringLength.
  • Name - Dzina lachidziwitso (chosankha).
  • Description - Kufotokozera za nkhaniyo (posankha).

Kubwerera Ens.StringResponse с Id nkhani yosungidwa. Poyesa, yang'anani ntchitoyo Save Context.

Pempho logwirizana isc.py.msg.RestoreRequest imanyamula nkhani kuchokera ku InterSystems IRIS kupita ku Python:

  • ContextId - chizindikiritso cha nkhani.
  • Clear - yeretsani nkhaniyo musanabwezeretse.

Buku la Jupyter

Buku la Jupyter ndi pulogalamu yapaintaneti yotseguka yomwe imakupatsani mwayi wopanga ndikusindikiza zolemba zokhala ndi ma code, zowonera, ndi zolemba. Python Gateway imakupatsani mwayi wowona ndikusintha njira za BPL ngati Jupyter Notebook. Chonde dziwani kuti wamba Python 3 executor pano akugwiritsidwa ntchito.

Kuwonjezedwaku kumaganiza kuti zofotokozera zili ndi nambala ya Python ndipo amagwiritsa ntchito mayina ngati mitu yam'mbuyomu. Tsopano ndizotheka kupanga njira zamabizinesi a PythonGateway mu Jupyter Notebook. Izi ndi zomwe zingatheke:

  • Pangani njira zatsopano zamabizinesi
  • Chotsani njira zamabizinesi
  • Pangani zochita zatsopano
  • Sinthani zochita
  • Chotsani zochita

pano kanema wachiwonetsero. Ndipo ma screenshots angapo:

Njira Explorer

Python Gateway mu InterSystems IRIS

Process editor

Python Gateway mu InterSystems IRIS

kolowera

  1. Mufunika InterSystems IRIS 2019.2+.
  2. Ikani PythonGateway v0.8+ (zofunikira isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints ΠΈ isc.py.ens.ProcessUtils).
  3. Sinthani nambala ya ObjectScript kuchokera kumalo osungirako.
  4. Pangani do ##class(isc.py.util.Jupyter).Install() ndi kutsatira malangizowo.

Zolemba.

anapezazo

MLToolkit ndi zida zomwe cholinga chake ndikuphatikiza mitundu ndi malo ochitirako zinthu kuti mitundu yomangidwa ikhale yogwiritsidwa ntchito molunjika pabizinesi yanu. Python Gateway ndi gawo la MLToolkit ndipo imapereka kuphatikizana ndi chilankhulo cha Python, kukulolani kuti mukonzekere makina ophunzirira makina opangidwa ku Python (malo akuluakulu a Asayansi ambiri a Data), gwiritsani ntchito malaibulale ambiri okonzeka kuti mupange mwachangu ma AI / ML mayankho pa InterSystems nsanja IRIS.

powatsimikizira

MLToolkit

Gulu la ogwiritsa ntchito a MLToolkit ndi malo achinsinsi a GitHub omwe adapangidwa ngati gawo la bungwe la InterSystems la GitHub. Amapangidwira ogwiritsa ntchito akunja omwe amayika, kuphunzira, kapena akugwiritsa ntchito kale zida za MLToolkit, kuphatikiza Python Gateway. Gululi lili ndi milandu ingapo yomwe yakhazikitsidwa (yomwe ili ndi code source ndi data test) pazamalonda, kupanga, zamankhwala ndi mafakitale ena ambiri. Kuti mulowe mgulu la ML Toolkit User Group, chonde tumizani imelo yaifupi ku adilesi iyi: [imelo ndiotetezedwa] ndikuphatikizanso izi m'kalata yanu:

  • GitHub lolowera
  • Bungwe (mumagwira ntchito kapena mumaphunzira)
  • Udindo (malo anu enieni m'gulu lanu, "Wophunzira" kapena "Wodziyimira pawokha").
  • dziko

Kwa iwo omwe awerenga nkhaniyi ndipo ali ndi chidwi ndi kuthekera kwa InterSystems IRIS ngati nsanja yopangira kapena kuchititsa injini zamakina anzeru komanso makina ophunzirira makina, tikukupemphani kuti mukambirane zomwe zingakusangalatseni bizinesi yanu. Tidzakhala okondwa kusanthula zosowa za kampani yanu ndikusankha limodzi dongosolo; Lumikizanani ndi imelo ya gulu lathu la akatswiri a AI/ML - [imelo ndiotetezedwa].

Source: www.habr.com

Kuwonjezera ndemanga