Isango lePython kwi-InterSystems IRIS

Eli nqaku limalunga nePython Gateway, iprojekthi yoluntu evulekileyo ye-InterSystems IRIS data platform. Le projekthi ikuvumela ukuba ulungelelanise nayiphi na i-algorithms yokufunda koomatshini eyenziwe kwiPython (eyona ndawo iphambili yeeNzululwazi ezininzi zeData), sebenzisa amathala eencwadi amaninzi esele yenziwe ngokukhawuleza ukudala izisombululo eziguquguqukayo, ezihlalutyayo zerobhothi ze-AI / ML kwiqonga le-InterSystems IRIS. Kule nqaku, ndiza kubonisa indlela i-InterSystems IRIS inokwenza ngayo iinkqubo kwiPython, inxibelelane ngokufanelekileyo idatha yeendlela ezimbini, kwaye idale iinkqubo zoshishino ezihlakaniphile.

Cwangciso

  1. Intshayelelo.
  2. Izixhobo.
  3. Ukufakwa
  4. API.
  5. Ukusebenzisana.
  6. Jupyter Notebook.
  7. Izigqibo.
  8. Unxulumano.
  9. MLToolkit.

Intshayelelo

I-Python lulwimi olukumgangatho ophezulu, olujoliswe ekuphuculeni imveliso yophuhlisi kunye nekhowudi yokufunda. Kolu luhlu lwamanqaku, ndiza kuxubusha amathuba okusebenzisa iPython kwi-InterSystems IRIS iqonga, ingqwalasela ephambili yeli nqaku kukusetyenziswa kwePython njengolwimi lokudala kunye nokuqhuba imodeli yokufunda koomatshini.

Ukufunda ngomatshini (ML) yiklasi yeendlela zobukrelekrele bokwenziwa, uphawu lweempawu ezingezona isisombululo esithe ngqo sengxaki, kodwa ukufunda kwinkqubo yokusombulula iingxaki ezininzi ezifanayo.

Ii-algorithms zokufunda koomatshini kunye neemodeli ziya zixhaphaka ngakumbi. Kukho izizathu ezininzi zoku, kodwa konke kuhla ekufikelelekeni, ukulula kunye nokuphumeza iziphumo ezibonakalayo. Ngaba ukudibanisa okanye inethiwekhi ye-neural imodeli entsha yetekhnoloji?

Ngokuqinisekileyo akunjalo, kodwa namhlanje akukho mfuneko yokubhala amakhulu amawaka emigca yekhowudi ukuqhuba imodeli enye, kwaye iindleko zokudala nokusebenzisa iimodeli ziba ngaphantsi nangaphantsi.

Izixhobo ziyaguquguquka - ngelixa singenazo ngokupheleleyo izixhobo ze-AI / ML ze-GUI-centric, inkqubela esiyibonileyo kunye nezinye iiklasi ezininzi zeenkqubo zolwazi, ezifana ne-BI (ukusuka kwikhowudi yokubhala ukuya ekusebenziseni izikhokelo kunye ne-GUI-centric configurable solutions) , ikwajongwe kwizixhobo zokwenza i-AI/ML. Sele siphumelele inqanaba lokubhala ikhowudi kwaye namhlanje sisebenzisa izikhokelo zokwakha nokuqeqesha imizekelo.

Olunye uphuculo, olufana nokukwazi ukusasaza imodeli eqeqeshwe kwangaphambili apho umsebenzisi wokugqibela kufuneka agqibe ukuqeqesha imodeli kwiinkcukacha zabo ezithile, kwenza kube lula ukuqalisa ngokufunda ngomatshini. Ezi nkqubela phambili zenza ukuba ukufunda koomatshini kube lula kakhulu kuzo zombini iingcali kunye neenkampani ngokubanzi.

Ngakolunye uhlangothi, siqokelela idatha eninzi nangaphezulu. Ngeqonga ledatha elidibeneyo njenge-InterSystems IRIS, lonke olu lwazi lunokulungiswa ngokukhawuleza kwaye lusetyenziswe njengegalelo kwiimodeli zokufunda ngomatshini.

Ngokufudukela kwilifu, ukuqaliswa kweeprojekthi ze-AI/ML kuya kuba lula kunangaphambili. Sinokusebenzisa kuphela izixhobo esizidingayo. Ngaphezu koko, ngenxa yokuhambelana okunikezelwa ngamaqonga elifu, sinokugcina ixesha elichithwe.

Kodwa kuthekani ngemiphumo? Apha kulapho izinto ziba nzima khona. Kukho izixhobo ezininzi zokwakha iimodeli, endiya kuxoxa ngazo ngokulandelayo. Ukwakha imodeli elungileyo akulula, kodwa yintoni elandelayo? Ukwenza inzuzo ngokusebenzisa imodeli yeshishini kungumsebenzi ongeyomfuneko. Ingcambu yengxaki kukuhlukana komsebenzi wokuhlalutya kunye nokuthengiselana, kunye neemodeli zedatha. Xa siqeqesha imodeli, ngokuqhelekileyo siyenza kwidatha yembali. Kodwa indawo yemodeli eyakhiweyo kukusetyenzwa kwedatha. Inceda ngantoni eyona modeli yobonelelo lwentengiselwano yobuqhophololo ukuba siyayiqhuba kanye ngemini? Ootsotsi kudala bemka nemali. Kufuneka siqeqeshe imodeli kwidatha yembali, kodwa kufuneka siyisebenzise ngexesha langempela kwidatha entsha engenayo ukuze iinkqubo zethu zoshishino zikwazi ukwenza izinto eziqikelelweyo ezenziwe yimodeli.

I-ML Toolkit yiseti yezixhobo ezijolise ukwenza oku kanye: ukudibanisa iimodeli kunye nemo yentengiselwano ukuze iimodeli ezakhiweyo zisetyenziswe ngokulula kwiinkqubo zakho zoshishino. I-Python Gateway yinxalenye ye-ML Toolkit kwaye ibonelela ngokudityaniswa nolwimi lwePython (ngokufanayo nendlela i-R Gateway, ukuba yinxalenye ye-ML Toolkit ibonelela ngayo ukudityaniswa nolwimi lwe-R).

Izixhobo

Ngaphambi kokuba siqhubeke, ndingathanda ukuchaza izixhobo ezimbalwa zePython kunye namathala eencwadi esiya kuwasebenzisa kamva.

zobugcisa

  • I-Python lulwimi olutolikwayo, olukwinqanaba eliphezulu, lwenjongo jikelele. Inzuzo ephambili yolwimi yilayibrari yayo enkulu yezibalo, iilayibrari ze-ML kunye ne-AI. Njenge-ObjectScript, lulwimi olujolise kwinto ethile, kodwa yonke into ichazwa ngokuguquguqukayo endaweni ye-statically. Kwakhona yonke into iyinto. Amanqaku amva athatha ukuqhelana nolwimi. Ukuba ufuna ukuqala ukufunda, ndincoma ukuqala amaxwebhu.
  • Kwimisebenzi yethu elandelayo, setha Python 3.6.7 64 bit.
  • IDE: Ndiyayisebenzisa I-PyCharm, kodwa ngokubanzi много. Ukuba usebenzisa i-Atelier, kukho iplagi ye-Eclipse yabaphuhlisi bePython. Ukuba usebenzisa iKhowudi yeVS, kukho ukongezwa kwePython.
  • Incwadi yamanqaku: Endaweni ye-IDE, ungabhala kwaye wabelane ngezikripthi zakho kwiincwadana zamanqaku ze-intanethi. Eyona idumileyo kubo ijupyter.

Amathala eencwadi

Nalu uluhlu (olungaphelelanga) lweelayibrari zokufunda ngoomatshini:

  • numpy - iphakheji esisiseko yezibalo ezichanekileyo.
  • Iipandas - izakhiwo zedatha ephezulu kunye nezixhobo zokuhlalutya idatha.
  • matplotlib - ukudalwa kweegrafu.
  • Ulwandle -Ukubona idatha esekwe kwi-matplotlib.
  • Sklearn - iindlela zokufunda ngoomatshini.
  • XGBoost -Ii-algorithms zokufunda koomatshini ngaphakathi kwesakhelo sendlela yokukhulisa igradient.
  • Gensim -NLP.
  • I-Keras - iinethiwekhi ze-neural.
  • I-Tensorflow - iqonga lokudala imodeli yokufunda koomatshini.
  • I-PyTorch liqonga lokudala imodeli yokufunda koomatshini, egxile kwiPython.
  • Nyoka -PMML kwiimodeli ezahlukeneyo.

Itekhnoloji ye-AI/ML yenza ishishini lisebenze ngakumbi kwaye liguquke. Ngaphezu koko, namhlanje obu buchwepheshe buba lula ukuphuhlisa nokuphumeza. Qala ukufunda malunga nobuchwepheshe be-AI/ML kunye nendlela abanokunceda ngayo umbutho wakho ukuba ukhule.

isicwangciso

Kukho iindlela ezininzi zokufaka kunye nokusebenzisa iPython Gateway:

  • I-OS
    • Windows
    • Linux
    • IMac
  • Docker
    • Sebenzisa umfanekiso ovela kwiDockerHub
    • Yenza inkangeleko yakho

Nokuba yeyiphi na indlela yokuhlohla, uya kufuna ikhowudi yomthombo. Indawo kuphela yokukhuphela ikhowudi iphepha lokukhupha. Iqulethe ukhupho oluvavanyiweyo oluzinzileyo, thatha nje olwamva nje. Okwangoku yi-0.8, kodwa ekuhambeni kwexesha kuya kubakho ezintsha. Sukubumba/ukhuphele indawo yokugcina, khuphela ukhupho lwamva nje.

I-OS

Ukuba ufaka i-Python Gateway kwinkqubo yokusebenza, ngoko kuqala (kungakhathaliseki ukuba yinkqubo yokusebenza) kufuneka ufake iPython. Yale:

  1. Faka iPython 3.6.7 64 bit. Kucetyiswa ukuba ufake iPython kulawulo olungagqibekanga.
  2. Faka imodyuli dill: pip install dill.
  3. Khuphela ikhowudi ye-ObjectScript (okt. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) kuyo nayiphi na indawo enemveliso. Ukuba ufuna indawo ekhoyo ukuxhasa iimveliso, sebenzisa: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Indawo callout DLL/SO/DYLIB kwifolda bin umzekelo wakho weInterSystems IRIS. Ifayile yethala leencwadi kufuneka ifumaneke kwindlela ebuyisiweyo write ##class(isc.py.Callout).GetLib().

Windows

  1. Qinisekisa ukuguquguquka kokusingqongileyo PYTHONHOME ikhomba kwiPython 3.6.7.
  2. Qinisekisa ukuba ukuguquguquka kwemeko-bume yenkqubo PATH iqulathe utshintsho PYTHONHOME (okanye uvimba weefayili ekhomba kuwo).

Linux (Debian/Ubuntu)

  1. Jonga ukuba imeko-bume iguquguquka PATH iqulethe /usr/lib и /usr/lib/x86_64-linux-gnu. Sebenzisa ifayile /etc/environment ukuseta iinguqu zemo engqongileyo.
  2. Kwimeko yeempazamo undefined symbol: _Py_TrueStruct seta useto PythonLib. kwakhona kwi Readme kukho icandelo leNgxaki.

IMac

  1. Okwangoku kuphela iPython 3.6.7 exhaswayo IPython.org. Jonga inguqu PATH.

Ukuba utshintshe izinto eziguquguqukayo zemekobume, qala kwakhona imveliso yakho ye-InterSystems.

Docker

Ukusebenzisa izikhongozeli kuneengenelo ezininzi:

  • Ukuphatheka
  • Impumelelo
  • Ukufakwa
  • Ukukhanya
  • Ukungaguquki

Jonga oku uthotho lwamanqaku ngolwazi oluthe kratya malunga nokusebenzisa iDocker ngeemveliso ze-InterSystems.

Zonke izakhiwo zePython Gateway okwangoku zisekwe kwizikhongozeli 2019.4.

Umfanekiso olungile

Baleka: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestukukhuphela kunye nokusebenza kwePython Gateway kunye ne-InterSystems IRIS Community Edition. Kuko konke.

Yenza inkangeleko yakho

Ukwakha umfanekiso wedokhi, baleka kwingcambu yendawo yokugcina: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Ngokungagqibekanga, umfanekiso wakhiwe ngokusekelwe kumfanekiso store/intersystems/iris-community:2019.4.0.383.0, nangona kunjalo ungatshintsha oku ngokucwangcisa utshintsho IMAGE.
Ukwakha ukusuka kwi-InterSystems IRIS, sebenzisa: `i-docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Emva koku unokuqhuba umfanekiso wedocker:

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

Ukuba usebenzisa umfanekiso osekelwe kwi-InterSystems IRIS Community Edition, ungasishiya isitshixo.

izimvo

  • Inkqubo yovavanyo isc.py.test.Process igcina inani lemifanekiso kulawulo lwexeshana. Ungafuna ukutshintsha le ndlela kulawulo olunyusiweyo. Ukwenza oku, hlela useto WorkingDir ikhankanya uvimba weefayili onyusiweyo.
  • Ukufikelela kwi-terminal run: docker exec -it irispy sh.
  • Ukufikelela kwiPortal yoLawulo lweNkqubo ngokungena SuperUser/SYS.
  • Ukumisa isikhongozeli, sebenzisa: docker stop irispy && docker rm --force irispy.

Ukuqinisekisa ukufakela

Nje ukuba uyifakile iPython Gateway, kufanelekile ukujonga ukuba iyasebenza. Yenza le khowudi kwi-InterSystems IRIS terminal:

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

Isiphumo kufuneka sibe: HELLO -Ixabiso eliguquguqukayo lePython x. Ukuba ubume bembuyekezo sc yimpazamo okanye var engenanto, khangela Readme-icandelo lengxaki.

API

I-Python Gateway ifakiwe kwaye uqinisekisile ukuba iyasebenza. Lixesha lokuba uqale ukuyisebenzisa!
Ujongano oluphambili kwiPython yi isc.py.Main. Inika amaqela alandelayo eendlela (zonke ziyabuya %Status):

  • Ukuphunyezwa kweKhowudi
  • Ukuhanjiswa kwedatha
  • Umncedi

Ukuphunyezwa kweKhowudi

Ezi ndlela zikuvumela ukuba wenze ikhowudi yePython engafanelekanga.

SimpleString

SimpleString - le yeyona ndlela iphambili. Kuthatha iingxoxo ezi-4 ozikhethelayo:

  • code — umgca wekhowudi oza kuwenza. Unobumba wesondlo somgca: $c(10).
  • returnVariable — igama loguqulo oluza kubuyiselwa.
  • serialization - indlela yokwenza uthotho returnVariable. 0 - umtya (ongagqibekanga), 1 - repr.
  • result - Ireferensi ye-ByRef kuguquko apho ixabiso libhalwa khona returnVariable.

ngasentla senze:

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

Kulo mzekelo, sabela ukwahluka kwePython x intsingiselo Hello kwaye ufuna ukubuyisela ixabiso lePython variable x kwi-ObjectScript eguquguqukayo var.

Yenza iKhowudi

I-ExecuteCode yeyona ndlela ikhuselekileyo kwaye inesithintelo esincinci SimpleString.
Imigca kwi-InterSystems iqonga le-IRIS lilinganiselwe kwiimpawu ze-3, kwaye ukuba ufuna ukuphumeza ikhowudi ende, kufuneka usebenzise iintambo.
Iingxoxo ezimbini zamkelwe:

  • code -umgca okanye umlambo wekhowudi yePython ekufuneka iphunyezwe.
  • variable - (ukhetho) unika umphumo wokubulawa code oku kuguquguquka kwePython.

Umzekelo wokusetyenziswa:

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

Kulo mzekelo, siphindaphinda u-2 ngo-3 kwaye sibhale umphumo kwi-Python variable y.

Ukuhanjiswa kwedatha

Dlula idatha ukuya nokusuka kwiPython.

Python -> InterSystems IRIS

Kukho iindlela ezi-4 zokufumana ixabiso lokuguquguquka kwePython kwi-InterSystems IRIS, kuxhomekeke kuluhlu olufunayo:

  • String kwiintlobo zedata ezilula kunye nokulungiswa kweempazamo.
  • Repr ukugcina izinto ezilula kunye nokulungiswa kweempazamo.
  • JSON ukwenza lula idatha kwicala le-InterSystems IRIS.
  • Pickle ukugcina izinto.

Ezi ndlela zikuvumela ukuba ubuyise izinto eziguquguqukayo kwiPython njengomtya okanye imisinga.

  • GetVariable(variable, serialization, .stream, useString) -fumana serialization ukuguquguquka variable в stream. ukuba useString ngu-1 kwaye ulandelelwano lubekwe kumtya, emva koko umtya uyabuyiswa hayi umsinga.
  • GetVariableJson(variable, .stream, useString) -fumana uthotho lweJSON lokuguquguquka.
  • GetVariablePickle(variable, .stream, useString, useDill) -fumana iPickle (okanye iDill) ulandelelwano lwenguqu.

Makhe sizame ukufumana ukuguquguquka kwethu y.

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

InterSystems IRIS -> Python

Ukulayisha idatha kwi-InterSystems IRIS kwiPython.

  • ExecuteQuery(query, variable, type, namespace) - yenza iseti yedatha (ipandas dataframe okanye list) ukusuka kumbuzo wesql kwaye uyibeke kwinguqu yePython variable. Ibhegi yeplastikhi isc.py kufuneka ibekhona kwindawo namespace - isicelo siya kwenziwa apho.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) -ilayisha idatha yehlabathi global ukusuka kumrhumo start до end kwiPython njengohlobo oluguquguqukayo type: list, okanye iipanda dataframe. Inkcazo yeengxoxo ozikhethelayo mask kwaye labels ekhoyo kumaxwebhu eklasi kunye nendawo yokugcina Amaxwebhu okuGqithisela ngeDatha.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - ilayisha idatha yeklasi class ukusuka kwi-id start до end kwiPython njengohlobo oluguquguqukayo type: list, okanye iipanda dataframe. properties — uluhlu (olwahlulwe ngekoma) lweempawu zeklasi ezifuna ukulayishwa kwiseti yedatha. Iimaski ziyaxhaswa * и ?. Okuhlala kukho - * (zonke iipropati). Ipropati %%CLASSNAME ingahoywa.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - ilayisha idatha yetafile table ukusuka kwi-id start до end kwiPython.

ExecuteQuery — jikelele (nawuphi na umbuzo ochanekileyo weSQL uya kudluliselwa kwiPython). Nangona kunjalo, ExecuteGlobal nezisongelo zayo ExecuteClass и ExecuteTable sebenza ngenani lezithintelo. Bakhawuleza kakhulu (i-3-5 amaxesha ngokukhawuleza kunomqhubi we-ODBC kunye namaxesha angama-20 ngokukhawuleza ExecuteQuery). Ulwazi oluninzi ku Amaxwebhu okuGqithisela ngeDatha.
Zonke ezi ndlela zixhasa ukudluliselwa kwedatha kuyo nayiphi na indawo. Ibhegi yeplastikhi isc.py kufuneka ifumaneke kwindawo ekujoliswe kuyo.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — ukudlulisela iziphumo zawo nawuphi na umbuzo ochanekileyo weSQL kwiPython. Le yeyona ndlela icothayo yokudlulisa idatha. Yisebenzise ukuba ExecuteGlobal kwaye izisongelo zayo azifumaneki.

Iingxoxo:

  • query - sql umbuzo.
  • variable - igama lePython eguquguqukayo apho idatha ibhalwe khona.
  • type - list okanye iiPanda dataframe.
  • namespace — indawo apho isicelo siya kwenziwa khona.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) -ukudlula kwihlabathi kwiPython.

Iingxoxo:

  • global - igama lehlabathi ngaphandle ^
  • variable - igama lePython eguquguqukayo apho idatha ibhalwe khona.
  • type - list okanye iiPanda dataframe.
  • start - umrhumo wokuqala wehlabathi. Ngokuyimfuneko %Integer.
  • end - umrhumo wokugqibela wehlabathi. Ngokuyimfuneko %Integer.
  • mask - imaski yexabiso yehlabathi. Imaski ingaba mfutshane kunenani leenkalo zehlabathi (apho amasimi ekupheleni aya kutsitywa). Ufomatha njani imaski:
    • + ligqithise ixabiso njengoko linjalo.
    • - tsiba ixabiso.
    • b -Udidi lweBoolean (0 - False, bonke abanye - True).
    • d - Umhla (ukusuka kwi-$horolog, kwiWindows ukusuka kwi-1970, kwi-Linux ukusuka kwi-1900).
    • t - Ixesha ($ horolog, imizuzwana emva ezinzulwini zobusuku).
    • m -Isitampu sexesha (umtya wefomati YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
  • labels — % Uluhlu lwamagama ekholamu. Into yokuqala ligama lomrhumo.
  • namespace — indawo apho isicelo siya kwenziwa khona.

ExecuteClass

Gquba ngaphezulu ExecuteGlobal. Ngokusekelwe kwinkcazo yeklasi, ilungiselela umnxeba ExecuteGlobal ambize.

ExecuteClass(class, variable, type, start, end, properties, namespace) -ukudlula idatha yeklasi kwiPython.

Iingxoxo:

  • class - igama leklasi
  • variable - igama lePython eguquguqukayo apho idatha ibhalwe khona.
  • type - list okanye iiPanda dataframe.
  • start — ukuqala ID.
  • end - i-ID yokugqibela
  • properties — uluhlu (olwahlulwe ngekoma) lweempawu zeklasi ezifuna ukulayishwa kwiseti yedatha. Iimaski ziyaxhaswa * и ?. Okuhlala kukho - * (zonke iipropati). Ipropati %%CLASSNAME ingahoywa.
  • namespace — indawo apho isicelo siya kwenziwa khona.

Zonke iipropati zigqithiswa njengoko zinjalo ngaphandle kweepropati zodidi %Date, %Time, %Boolean и %TimeStamp - ziguqulelwa kwiiklasi zePython ezihambelanayo.

ExecuteTable

Gquba ngaphezulu ExecuteClass. Uguqulela igama letafile kwigama leklasi kunye neefowuni ExecuteClass. Umsayino:

ExecuteTable(table, variable, type, start, end, properties, namespace) -ukudlula idatha yetafile kwiPython.

Iingxoxo:

  • table - igama letheyibhile.
    Zonke ezinye iingxoxo zigqithiswa njengoko kusenziwa ExecuteClass.

Amanqaku

  • ExecuteGlobal, ExecuteClass и ExecuteTable sebenza ngokukhawuleza ngokulinganayo.
  • ExecuteGlobal Amaxesha angama-20 ngokukhawuleza kunoko ExecuteQuery kwiiseti zedatha enkulu (ixesha lokutshintshela> imizuzwana eyi-0.01).
  • ExecuteGlobal, ExecuteClass и ExecuteTable sebenza kwiiglobals ngesi sakhiwo: ^global(key) = $lb(prop1, prop2, ..., propN) apho key - inani elipheleleyo.
  • kuba ExecuteGlobal, ExecuteClass и ExecuteTable uluhlu lwamaxabiso oluxhaswayo %Date ihambelana noluhlu mktime kwaye kuxhomekeke kwi-OS (windows: 1970-01-01, linux 1900-01-01, IMac). Sebenzisa %TimeStampukudlulisa idatha ngaphandle kolu luhlu okanye ukusebenzisa i-pandas dataframe kuba olu luluhlu-kuphela umda.
  • kuba ExecuteGlobal, ExecuteClass и ExecuteTable zonke iingxoxo ngaphandle komthombo wedatha (ihlabathi, iklasi okanye itafile) kunye notshintsho alukhethi.

U mzekelo

Iklasi yovavanyo isc.py.vavanya.Umntu iqulethe indlela ebonisa zonke iinketho zogqithiso lwedatha:

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)

Biza indlela do ##class(isc.py.test.Person).Test() ukubona ukuba zisebenza njani zonke iindlela zokudlulisa idatha.

Iindlela zoNcedisi

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — fumana ulwazi malunga nokuguquguquka: nokuba kuchaziwe, udidi lwayo kunye nobude bolandelelwano.
  • GetVariableDefined(variable, .defined) — nokuba uguqulo luchaziwe.
  • GetVariableType(variable, .type) - fumana iklasi yenguqu.
  • GetStatus() -fumana kwaye ususe ngaphandle kokugqibela kwicala lePython.
  • GetModuleInfo(module, .imported, .alias) — fumana imodyuli eguquguqukayo kunye nobume bokungenisa elizweni.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — fumana ulwazi malunga nomsebenzi.

Ukusebenzisana

Ufundile ukubiza iPython Gateway kwi-terminal, ngoku masiqale ukuyisebenzisa kwimveliso. Isiseko sokusebenzisana nePython kule ndlela isc.py.ens.Operation. Iyasivumela:

  • Yenza ikhowudi kwiPython
  • Gcina/Buyisela umxholo wePython
  • Layisha kwaye ufumane idatha evela kwiPython

Ngokusisiseko, ukusebenza kwePython kukusonga ngaphezulu isc.py.Main. Ukusebenza isc.py.ens.Operation inikeza ukukwazi ukusebenzisana nenkqubo yePython evela kwi-InterSystems iimveliso ze-IRIS. Imibuzo emihlanu iyaxhaswa:

  • isc.py.msg.ExecutionRequest ukwenza ikhowudi yePython. Ukubuyisela isc.py.msg.ExecutionResponse ngesiphumo sokwenziwa kunye namaxabiso eenguqu eziceliweyo.
  • isc.py.msg.StreamExecutionRequest ukwenza ikhowudi yePython. Ukubuyisela isc.py.msg.StreamExecutionResponse isiphumo sokwenziwa kunye namaxabiso eenguqu eziceliweyo. I-analogue isc.py.msg.ExecutionRequest, kodwa yamkela kwaye ibuyise imisinga endaweni yemitya.
  • isc.py.msg.QueryRequest ukuhambisa isiphumo sokwenza umbuzo weSQL. Ukubuyisela Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest yokudlulisa idatha yehlabathi/yeklasi/yetafile. Ukubuyisela Ens.Response.
  • isc.py.msg.SaveRequest ukugcina umxholo wePython. Ukubuyisela Ens.StringResponse nge-ID yomxholo.
  • isc.py.msg.RestoreRequest ukubuyisela umxholo wePython.

    Ukongeza, isc.py.ens.Operation inesetingi ezimbini:

    • Initializer — ukukhetha iklasi esebenzisa ujongano isc.py.init.Abstract. Ingasetyenziselwa ukulayisha imisebenzi, iimodyuli, iiklasi, njl. Yenziwa kanye xa inkqubo iqala.
    • PythonLib - (iLinux kuphela) ukuba ubona iimpazamo xa ulayisha, misela ixabiso layo libpython3.6m.so okanye nakwindlela epheleleyo eya kwithala leencwadi lePython.

Ukudalwa kweenkqubo zoshishino

Kukho iiklasi ezimbini ezikhoyo eziququzelela uphuhliso lweenkqubo zoshishino:

  • isc.py.ens.ProcessUtils ikuvumela ukuba ukhuphe amanqakwana kwimisebenzi enotshintsho oluguquguqukayo.
  • isc.py.util.BPEmulator yenza kube lula ukuvavanya iinkqubo zoshishino ngePython. Inokwenza inkqubo yeshishini (iinxalenye zePython) kwinkqubo yangoku.

Ukutshintsha okuguquguqukayo

Zonke iinkqubo zoshishino ezizuzwe njengelifa isc.py.ens.ProcessUtils, unokusebenzisa indlela GetAnnotation(name) ukufumana ixabiso lenkcazo yomsebenzi ngegama layo. Inkcazo yomsebenzi inokuquka izinto eziguquguqukayo eziza kubalwa kwicala le-InterSystems IRIS ngaphambi kokuba idluliselwe kwiPython. Nantsi i-syntax yokutshintsha okuguquguqukayo:

  • ${class:method:arg1:...:argN} - umnxeba wendlela
  • #{expr} — yenza ikhowudi ngolwimi lwe-ObjectScript.

Umzekelo uyafumaneka kwinkqubo yovavanyo lweshishini isc.py.test.Process, umzekelo, kumsebenzi Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Kulo mzekelo:

  • #{process.WorkDirectory} ibuyisela iWorkDirectory ipropathi yento process, ngumzekelo weklasi isc.py.test.Process abo. inkqubo yangoku yoshishino.
  • ${%PopulateUtils:Integer:1:100} ubiza indlela Integer класса %PopulateUtils, ukudlula iingxoxo 1 и 100, ibuyisela inani elipheleleyo kuluhlu 1...100.

Uvavanyo lwenkqubo yeshishini

Iimveliso zovavanyo kunye neenkqubo zoshishino zovavanyo zifumaneka ngokungagqibekanga njengenxalenye yePython Gateway. Ukuzisebenzisa:

  1. Kwi-terminal ye-OS, sebenzisa: pip install pandas matplotlib seaborn.
  2. Kwi-InterSystems IRIS terminal, sebenzisa: do ##class(isc.py.test.CannibalizationData).Import() ukugcwalisa idatha yovavanyo.
  3. Qalisa iimveliso isc.py.test.Production.
  4. Thumela uhlobo lwesicelo Ens.Request в isc.py.test.Process.

Makhe sibone ukuba konke kusebenza njani kunye. Vula isc.py.test.Process kumhleli weBPL:

Isango lePython kwi-InterSystems IRIS

Ukuphunyezwa kweKhowudi

Owona mceli mngeni ubalulekileyo kukwenza ikhowudi yePython:

Isango lePython kwi-InterSystems IRIS

Umbuzo osetyenzisiweyo isc.py.msg.ExecutionRequest, Nazi iimpawu zayo:

  • Code - Ikhowudi yePython.
  • SeparateLines — nokuba uyahlulahlula ikhowudi ibe yilayini ukuze iphunyezwe. $c(10) (n) isetyenziselwa ukwahlula iintambo. Nceda qaphela ukuba AKUKUNIKEzwa kucetyiswa ukuba uqhubekisele phambili umyalezo wonke kanye, lo msebenzi wenzelwe kuphela ukuqhubekeka def kunye nentetho yemigca emininzi efanayo. Ukuhlala kukho 0.
  • Variables — uluhlu olwahlulwe ngekoma lweziguquguquko eziya kongezwa kwimpendulo.
  • Serialization — Sizicwangcisa njani iinguqu esifuna ukuzibuyisela. Ukhetho: Str, Repr, JSON, Pickle и Dill, ehlala ikho Str.

Kwimeko yethu, sibeka ipropati kuphela Code, ngoko ke zonke ezinye iipropati zisebenzisa amaxabiso angagqibekanga. Siyibeke ngokufowuna process.GetAnnotation("Import pandas"), ethi ngexesha lokuqhuba ibuyisele isichasiselo emva kokutshintshwa okutshintshileyo kwenziwe. Ngapha koko, ikhowudi import pandas as pd iya kudluliselwa kwiPython. GetAnnotation kunokuba luncedo ekufumaneni izikripthi zePython ezinemigca emininzi, kodwa akukho zithintelo kule ndlela yokufumana ikhowudi. Ungacwangcisa ipropathi Code nangayiphi na indlela ekulungeleyo.

Ukufumana iinguqu

Omnye umngeni onomdla wokusebenzisa isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Isango lePython kwi-InterSystems IRIS

Ibala i-Correlation Matrix kwicala lePython kwaye ikhuphe ukuguquguquka corrmat buyela kwi-InterSystems IRIS kwifomathi ye-JSON ngokucwangcisa iipropati zesicelo:

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

Sinokuzibona iziphumo kwi-Visual Trace:

Isango lePython kwi-InterSystems IRIS

Kwaye ukuba sifuna eli xabiso kwiBP, singayifumana ngolu hlobo: callresponse.Variables.GetAt("corrmat").

Ukuhanjiswa kwedatha

Okulandelayo, makhe sithethe ngokugqithisela idatha ukusuka kwi-InterSystems IRIS ukuya kwiPython; zonke izicelo zokudluliselwa kwedatha zisebenzisa ujongano. isc.py.msg.DataRequestebonelela ngezi propati zilandelayo:

  • Variable — iPython eguquguqukayo apho kubhalwe khona idatha.
  • Type - uhlobo oluguquguqukayo: dataframe (pandas dataframe) okanye list.
  • Namespace — indawo esifumana kuyo idatha. Ibhegi yeplastikhi isc.py kufuneka ibekhona kule ndawo. Oku kunokuba yindawo ngaphandle kwenkxaso yemveliso.

Ngokusekwe kolu jongano, iiklasi ezi-4 zezicelo ziphunyeziwe:

  • isc.py.msg.QueryRequest - misela ipropati Query ukuthumela umbuzo weSQL.
  • isc.py.msg.ClassRequest - misela ipropati Class ukudlulisa idatha yeklasi.
  • isc.py.msg.TableRequest - cwangcisa ipropati Table ukudlulisa idatha yetafile.
  • isc.py.msg.GlobalRequest - cwangcisa ipropati Global kugqithiso lwedatha yehlabathi.

Kwinkqubo yovavanyo, jonga umsebenzi RAWphi isc.py.msg.QueryRequest iboniswe ngesenzo.

Isango lePython kwi-InterSystems IRIS

Ukugcina / Ukubuyisela Umxholo wePython

Ekugqibeleni, sinokugcina umxholo wePython kwi-InterSystems IRIS, ukwenza oku siya kuthumela isc.py.msg.SaveRequest ngeengxoxo:

  • Mask — Kuphela ziinguqu ezihambelana nemaski ezigciniweyo. Ixhasiwe * и ?. Umzekelo: "Data*, Figure?". Ukuhlala kukho *.
  • MaxLength - Ubude obuninzi benguqu egciniweyo. Ukuba ulandelelwano lwenguquko lude, aluyi kuhoywa. Cwangcisa ku-0 ukufumana iinguqu zabo nabuphi na ubude. Ukuhlala kukho $$$MaxStringLength.
  • Name — Igama lomxholo (uyazikhethela).
  • Description - Inkcazo yomxholo (ukhetho).

Iyabuya Ens.StringResponse с Id umxholo ogciniweyo. Kwinkqubo yovavanyo, jonga umsebenzi Save Context.

Isicelo esinxulumeneyo isc.py.msg.RestoreRequest ilayisha umxholo ukusuka kwi-InterSystems IRIS kwiPython:

  • ContextId - into ebonisa umxholo.
  • Clear - cima umxholo ngaphambi kokubuyisela.

Incwadana yokubhalela kaJupyter

Incwadana yokubhalela kaJupyter sisicelo sewebhu esivulelekileyo esikuvumela ukuba wenze kwaye upapashe iincwadi zamanqaku ezinekhowudi, imiboniso, kunye nokubhaliweyo. I-Python Gateway ikuvumela ukuba ujonge kwaye uhlele iinkqubo ze-BPL ngendlela yeJupyter Notebook. Nceda uqaphele ukuba i-Python 3 eexecutor eqhelekileyo isetyenziswa ngoku.

Olu lwandiso luthatha ukuba amanqakwana anekhowudi yePython kwaye isebenzisa amagama omsebenzi njengezihloko ezandulelayo. Ngoku kunokwenzeka ukuphuhlisa iinkqubo zoshishino zePythonGateway kwiJupyter Notebook. Nantsi into enokwenzeka:

  • Yenza iinkqubo ezintsha zoshishino
  • Cima iinkqubo zoshishino
  • Yenza imisebenzi emitsha
  • Guqula imisebenzi
  • Cima imisebenzi

Apha ividiyo yedemo. Kwaye iifoto-skrini ezimbalwa:

Inkqubo yoMhloli

Isango lePython kwi-InterSystems IRIS

Umhleli wenkqubo

Isango lePython kwi-InterSystems IRIS

isicwangciso

  1. Uya kufuna i-InterSystems IRIS 2019.2+.
  2. Faka iPythonGateway v0.8+ (ifuneka kuphela isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Hlaziya ikhowudi ye-ObjectScript kwindawo yokugcina.
  4. Baleka do ##class(isc.py.util.Jupyter).Install() kwaye ulandele imiyalelo.

Amaxwebhu.

ezifunyanisiweyo

I-MLToolkit yiseti yezixhobo ezinjongo yazo ikukudibanisa imodeli kunye nemeko yentengiselwano ukuze iimodeli ezakhiweyo zisetyenziswe ngokulula kwiinkqubo zakho zoshishino. I-Python Gateway yinxalenye yeMLToolkit kwaye ibonelela ngokudityaniswa nolwimi lwePython, ikuvumela ukuba ulungelelanise naziphi na iialgorithms zokufunda zoomatshini ezenziwe kwiPython (eyona ndawo iphambili yeeNzululwazi ezininzi zeData), sebenzisa amathala eencwadi amaninzi esele yenziwe ukwenza ngokukhawuleza uhlengahlengiso, uhlalutyo lwerobhothi AI / Izisombululo zeML kwi-InterSystems iqonga IRIS.

iimbekiselo

MLToolkit

Iqela labasebenzisi beMLToolkit yindawo yokugcina yeGitHub eyenziwe njengenxalenye yombutho we-InterSystems weGitHub. Yenzelwe abasebenzisi bangaphandle abafakela, bafunde, okanye sele besebenzisa amacandelo eMLToolkit, kuquka nePython Gateway. Iqela linamatyala amaninzi aphunyeziweyo (kunye nekhowudi yomthombo kunye neenkcukacha zokuvavanya) kwiinkalo zokuthengisa, ukuvelisa, amayeza kunye namanye amashishini amaninzi. Ukujoyina iQela labasebenzisi be-ML Toolkit, nceda uthumele i-imeyile emfutshane kule dilesi ilandelayo: [imeyile ikhuselwe] kwaye uquke olu lwazi lulandelayo kwileta yakho:

  • Igama lomsebenzisi leGitHub
  • Umbutho (usebenza okanye ufunda)
  • Isikhundla (indawo yakho yokwenyani kumbutho wakho, nokuba "nguMfundi" okanye "oZimeleyo").
  • ilizwe

Kwabo bafunde inqaku kwaye banomdla kwizakhono ze-InterSystems IRIS njengeqonga lokuphuhlisa okanye lokubamba ubukrelekrele bokwenziwa kunye neenjini zokufunda koomatshini, siyakumema ukuba uxoxe ngeemeko ezinokwenzeka ezinomdla kwishishini lakho. Siya konwaba ukuhlalutya iimfuno zenkampani yakho kwaye sigqibe ngokudibeneyo isicwangciso somsebenzi; Idilesi ye-imeyile ye-AI/ML yeqela lethu leengcaphephe- [imeyile ikhuselwe].

umthombo: www.habr.com

Yongeza izimvo