Python Gateway gudaha InterSystems IRIS

Maqaalkani wuxuu ku saabsan yahay Python Gateway, mashruuc bulsho oo il furan oo loogu talagalay madal xogta IRIS ee InterSystems. Mashruucani wuxuu kuu oggolaanayaa inaad abaabulto algorithms kasta oo barashada mashiinka ee lagu abuuray Python (jawiga ugu weyn ee saynisyahano badan oo xog ah), adeegso maktabado badan oo diyaarsan si aad si dhakhso leh ugu abuurto laqabsiga, xalalka falanqaynta robotic AI / ML ee madal InterSystems IRIS. Maqaalkan, waxaan ku tusi doonaa sida InterSystems IRIS u habayn karto geeddi-socodyada Python, si hufan ula xiriiri karaan xogta laba-geesoodka ah, iyo abuurista habab ganacsi oo caqli-gal ah.

Qorshee

  1. Horudhac.
  2. Qalab.
  3. Rakibaadda
  4. API.
  5. wada shaqayn
  6. Jupyter Notebook.
  7. Gabagabo.
  8. Xiriirinta
  9. MLToolkit.

Horudhac

Python waa luuqad barnaamijeed heer sare ah, ujeedo guud ah oo ujeedadeedu tahay horumarinta wax soo saarka horumariyaha iyo akhrinta koodka. Maqaalladan taxanaha ah, waxaan kaga hadli doonaa suurtagalnimada isticmaalka Python ee madal InterSystems IRIS, iyada oo ujeeddada ugu weyn ee maqaalkani ay tahay adeegsiga Python oo ah luqad loogu talagalay abuurista iyo socodsiinta moodooyinka barashada mashiinka.

Barashada mashiinka (ML) waa fasal ka mid ah hababka sirdoonka macmal ah, sifo sifo ah oo aan ahayn xalka tooska ah ee dhibaatada, laakiin barashada habka xalinta dhibaatooyin badan oo la mid ah.

Algorithms-yada barashada mashiinka iyo moodooyinka ayaa noqda kuwo caan ah. Waxaa jira sababo badan oo tan ah, laakiin dhammaantood waxay hoos ugu dhacaan helitaan, fududaan iyo gaaritaanka natiijooyin wax ku ool ah. Isku-duubnida ama xitaa shabakada neural qaabaynta ma tahay tignoolajiyad cusub?

Dabcan maaha, laakiin maalmahan looma baahna in la qoro boqollaal kun oo xariiqyo kood ah si loo socodsiiyo hal model, iyo kharashka abuurista iyo isticmaalka moodooyinka ayaa sii yaraanaya.

Qalabku waa horumarayaan - iyadoo aynaan si buuxda u haysan qalabka GUI-centric AI / ML, horumarka aan ku aragnay fasallo kale oo badan oo nidaamyada macluumaadka ah, sida BI (laga bilaabo code-qorista ilaa adeegsiga qaab-dhismeedka iyo xalalka isku-habaynta ee GUI-centric) , waa Waxa kale oo lagu arkay aaladaha lagu abuurayo AI/ML. Waxaan mar hore ka gudubnay marxaladda code-qorista maantana waxaan isticmaalnaa qaab-dhismeedka si loo dhiso loona tababaro moodooyinka.

Horumarin kale, sida awoodda qaybinta nooc horay loo tababaray halkaas oo isticmaalaha ugu dambeeya uu si fudud u dhammeeyo tababarka moodeelka xogtooda gaarka ah, sidoo kale waxay sahlaysaa in lagu bilaabo barashada mashiinka. Horumarradan ayaa ka dhigaya barashada mashiinka barashada mid aad u fudud labadaba xirfadlayaasha iyo guud ahaan shirkadaha.

Dhanka kale, waxaan ururinaynaa xog aad iyo aad u badan. Iyada oo la adeegsanayo madal xogta midaysan sida InterSystems IRIS, dhammaan macluumaadkan ayaa isla markiiba la diyaarin karaa oo loo isticmaali karaa sidii la gelin lahaa moodooyinka barashada mashiinka.

U guurista daruuraha, bilaabista mashaariicda AI / ML waxay noqonaysaa mid sahlan waligeed. Waxaan kaliya isticmaali karnaa agabka aan u baahanahay. Intaa waxaa dheer, iyada oo ay ugu wacan tahay isbarbardhigga ay bixiyaan aaladaha daruuriga ah, waxaan badbaadin karnaa waqtiga la isticmaalo.

Laakiin maxaa ku saabsan natiijada? Waa halka ay arrimuhu ku sii adkaanayaan. Waxaa jira qalab badan oo loogu talagalay dhismaha moodooyinka, kuwaas oo aan ka hadli doono xiga. Dhisida qaab wanaagsan ma fududa, laakiin maxaa xiga? Ka faa'iidaysiga isticmaalka qaab ganacsi sidoo kale waa hawl aan fududayn. Asalka dhibku waa kala-soocidda culayska shaqada ee falanqaynta iyo macaamilka, iyo moodooyinka xogta. Marka aan tababarno nooc, waxaan inta badan ku sameynaa xogta taariikhiga ah. Laakin meesha qaabka la dhisay waa habka xogta macaamilka. Waa maxay faa'iidada ugu fiican ee qaabka ogaanshaha macaamil ganacsi ee khiyaanada leh haddii aan wadno hal mar maalintii? Khayaanada ayaa muddo dheer tan iyo markii ay la tageen lacagta. Waxaan u baahanahay inaan ku tababarno tusaalaha xogta taariikhiga ah, laakiin sidoo kale waxaan u baahanahay inaan ku dabaqno wakhtiga dhabta ah xogta cusub ee soo socota si geeddi-socodka ganacsigeenu uu u dhaqmo saadaasha uu sameeyay qaabka.

Qalabka ML waa qalabyo kala duwan oo ujeedadoodu tahay in sidaas la sameeyo: mideeya moodooyinka iyo deegaanka wax kala iibsiga si moodooyinka la dhisay si sahal ah loogu isticmaalo si toos ah hababka ganacsigaaga. Python Gateway waa qayb ka mid ah ML Toolkit oo waxay siisaa is dhexgalka luqadda Python (oo la mid ah sida R Gateway, ka mid ahaanshiyaha ML Toolkit uu bixiyo isdhexgalka luqadda R).

Qalabka Qalabka

Kahor intaanan sii wadin, waxaan jeclaan lahaa inaan sharaxo dhowr qalab iyo maktabado Python ah oo aan isticmaali doono hadhow.

of technology

  • Python waa luuqad la turjumay, heer sare ah, barnaamij ujeedo guud ah. Faa'iidada ugu weyn ee luqaddu waa maktabadeeda weyn ee xisaabta, ML iyo maktabadaha AI. Sida ObjectScript, waa luqad ku jihaysan shay, laakiin wax walba si firfircooni ah ayaa loo qeexaa halkii ay ka ahaan lahayd mid taagan. Sidoo kale wax walba waa shay. Maqaalada dambe waxay u qaadanayaan aqoon-isweydaarsiga luqadda. Haddii aad rabto inaad bilowdo waxbarashada, waxaan ku talinayaa inaad ku bilowdo dukumentiyo.
  • Layligayada xiga, dhig Python 3.6.7 64 bit.
  • IDE: waan isticmaalaa PyCharm, laakiin guud ahaan waxay yihiin ΠΌΠ½ΠΎΠ³ΠΎ. Haddii aad isticmaasho Atelier, waxaa jira plugin Eclipse ah oo loogu talagalay horumarinta Python. Haddii aad isticmaalayso VS Code, waxaa jira kordhinta Python.
  • Buug xusuusin: Halkii IDE, waxaad ku qori kartaa oo ku wadaagi kartaa qoraalladaada buugaagta wax lagu qoro ee internetka. Kuwa ugu caansan iyaga waa jupyter.

Maktabadaha

Halkan waxaa ah liiska maktabadaha barashada mashiinka (aan ahayn)

  • Kabuubyo - xirmo aasaasi ah oo loogu talagalay xisaabinta saxda ah.
  • Baandooyinka - Qaab dhismeedka xogta waxqabadka sare leh iyo aaladaha falanqaynta xogta.
  • matplotlib - abuurista garaafyada.
  • badda ku dhashay - muuqaalaynta xogta ku salaysan matplotlib.
  • Sklearn - hababka barashada mashiinka.
  • XGBoost - Algorithms-ka barashada mashiinka oo ku dhex jira qaab dhismeedka habka kor u qaadista gradient.
  • Gensim - NLP.
  • Keras - shabakadaha neerfaha.
  • Dareenka - madal lagu abuurayo moodooyinka barashada mashiinka.
  • PyTorch waa madal lagu abuurayo moodooyinka barashada mashiinka, oo diiradda lagu saaray Python.
  • Nyoka - PMML ka noocyo kala duwan.

Tignoolajiyada AI/ML waxay ka dhigaan ganacsiga mid hufan oo la qabsan karo. Waxaa intaa dheer, maanta tignoolajiyadaasi waxay noqonayaan kuwo sahlan horumarinta iyo hirgelinta. Bilow inaad barato tignoolajiyada AI/ML iyo sida ay uga caawin karaan ururkaaga inuu koro.

Ku rakibida

Waxaa jira dhowr siyaabood oo loo rakibo oo loo isticmaalo Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Isticmaal sawirka DockerHub
    • Samee muuqaalkaaga

Iyadoo aan loo eegin habka rakibidda, waxaad u baahan doontaa koodhka isha. Meesha kaliya ee laga soo dejisan karo koodka waa bogga sii daayo. Waxay ka kooban tahay siideynyo deggan oo la tijaabiyey, kaliya qaado kii ugu dambeeyay. Waqtigan xaadirka ah waa 0.8, laakiin waqti ka dib waxaa jiri doona kuwa cusub. Ha xidhin/soo dejin kaydka, soo deji sii-deynta u dambaysay.

OS

Haddii aad ku rakibayso Python Gateway nidaamka hawlgalka, markaa marka hore (iyadoon loo eegin nidaamka hawlgalka) waxaad u baahan tahay inaad rakibto Python. Tan awgeed:

  1. Ku rakib Python 3.6.7 64 bit. Waxaa lagu talinayaa in lagu rakibo Python tusaha caadiga ah.
  2. Ku rakib moduleka dill: pip install dill.
  3. Soo deji koodka ObjectScript (ie. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) meel kasta oo badeecooyin leh. Haddii ay dhacdo in aad rabto meel jira oo aad ka taageerto alaabta, orod: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Goobta callout DLL/SO/DYLIB gal bin Tusaale ahaan InterSystems IRIS. Faylka maktabadda waa in laga helaa dariiqa lagu soo celiyay write ##class(isc.py.Callout).GetLib().

Windows

  1. Hubi in jawigu doorsoomayo PYTHONHOME waxay tilmaamaysaa Python 3.6.7.
  2. Hubi in doorsoomiyaha deegaanka nidaamka uu yahay PATH ka kooban doorsoome PYTHONHOME (ama tusaha ay tilmaamayso).

Linux (Debian/Ubuntu)

  1. Hubi in doorsoomaha deegaanku yahay PATH waxaa ku jira /usr/lib ΠΈ /usr/lib/x86_64-linux-gnu. Isticmaal faylka /etc/environment si loo dejiyo doorsoomayaasha deegaanka.
  2. Haddii ay dhacdo khaladaad undefined symbol: _Py_TrueStruct dhigay goobta PythonLib. sidoo kale gudaha Readme waxaa jira qayb xallinta dhibaatada.

Mac

  1. Hadda Python 3.6.7 kaliya ayaa la taageeraa Python.org. Hubi doorsoomaha PATH.

Haddii aad bedeshay doorsoomayaasha deegaanka, dib u billow alaabtaada InterSystems.

Docker

Isticmaalka weelasha waxay leedahay faa'iidooyin dhowr ah:

  • Qaadashada
  • Waxtarka
  • Dahaarka
  • Iftiin
  • Is-beddella'aan

Fiiri tan maqaallo taxane ah Macluumaad dheeri ah oo ku saabsan isticmaalka Docker ee alaabada InterSystems.

Dhammaan dhismayaasha Python Gateway waxay hadda ku salaysan yihiin weel 2019.4.

Sawir diyaarsan

Orod: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestsi loo soo dejiyo oo loo maamulo Python Gateway oo leh InterSystems IRIS Community Edition. Waa intaas.

Samee muuqaalkaaga

Si aad u dhisto sawirka docker, ku orod xididka kaydka: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Sida caadiga ah, sawirku wuxuu ku salaysan yahay sawirka store/intersystems/iris-community:2019.4.0.383.0, si kastaba ha ahaatee waxaad bedeli kartaa tan adigoo dejinaya doorsoome IMAGE.
Si aad uga dhisto InterSystems IRIS, orod: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:ugu dambeeyay ".

Tan ka dib waxaad socodsiin kartaa sawirka docker:

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

Haddii aad isticmaalayso sawir ku salaysan InterSystems IRIS Community Edition, waad iska dhaafi kartaa furaha.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

  • Habka tijaabada isc.py.test.Process waxa uu kaydiyaa tiro sawiro hage ku meel gaadh ah. Waxaa laga yaabaa inaad rabto inaad jidkan u beddesho hagaha rakiban. Si tan loo sameeyo, tafatir goobta WorkingDir qeexidda hagaha rakiban.
  • Si aad u gasho orodka terminalka: docker exec -it irispy sh.
  • Gelitaanka Xariirka Maareynta Nidaamka marka la galo SuperUser/SYS.
  • Si aad u joojiso weelka, orod: docker stop irispy && docker rm --force irispy.

Xaqiijinta rakibidda

Marka aad rakibto Python Gateway, waxaa habboon in la hubiyo in uu shaqaynayo. Ku fuli koodkan gudaha InterSystems IRIS terminal:

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

Natiijadu waa inay noqotaa: HELLO - Qiimaha doorsoomiyaha Python x. Haddii xaaladda soo noqoshada sc waa qalad ama var maran, hubi Akhriska - Qaybta xallinta dhibaatada.

API

Python Gateway waa la rakibay oo waxaad xaqiijisay inay shaqeyso. Waa waqtigii la bilaabi lahaa isticmaalkeeda!
Isku xirka ugu weyn ee Python waa isc.py.Main. Waxay bixisaa kooxahan hababka soo socda (dhammaan soo noqoshada %Status):

  • Xeerka Fulinta
  • Gudbinta Xogta
  • Kaaliyaha

Xeerka Fulinta

Hababkani waxay kuu oggolaanayaan inaad fuliso koodka Python gardarrada ah.

SimpleString

SimpleString - tani waa habka ugu muhiimsan. Waxay qaadataa 4 doodood oo ikhtiyaari ah:

  • code - line of code in la fuliyo. Dabeecadda quudinta khadka: $c(10).
  • returnVariable - magaca doorsoomaha soo noqoshada.
  • serialization - sida loo sameeyo taxane returnVariable. 0 - xadhig (default), 1 - repr.
  • result - ByRef tixraac doorsoomiyaha kaas oo qiimaha lagu qoray returnVariable.

Kor waxaan ku sameynay:

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

Tusaalahan, waxaanu ku meelaynaynaa doorsoome Python ah x macnaha Hello waxayna rabaan inay soo celiyaan qiimaha doorsoomayaasha Python x doorsoome ObjectScript var.

ExecuteCode

ExecuteCode waa beddel ka badbaado badan oo xaddidan SimpleString.
Xadadka InterSystems madal IRIS waxay ku kooban yihiin 3 xaraf, oo haddii aad rabto inaad samayso gabal kood dheer, waxaad u baahan tahay inaad isticmaasho dunta.
Laba dood ayaa la aqbalay:

  • code - xariiq ama qulqulka koodka Python in la fuliyo.
  • variable - (ikhtiyaar ah) ayaa tilmaamaya natiijada fulinta code doorsoomahan Python.

Tusaale in la isticmaalo:

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

Tusaalahan, waxaan ku dhufano 2 3 waxaanan natiijada u qornaa doorsoome Python ah y.

Gudbinta Xogta

U gudbi xogta Python una gudbi.

Python -> InterSystems IRIS

Waxaa jira 4 siyaabood oo lagu heli karo qiimaha doorsoomayaasha Python gudaha InterSystems IRIS, iyadoo ku xidhan taxanaha aad u baahan tahay:

  • String noocyada xogta fudud iyo khaladka.
  • Repr loogu talagalay kaydinta walxaha fudud iyo cilladaha.
  • JSON si fudud xogta loo maareeyo dhinaca InterSystems IRIS.
  • Pickle si loo badbaadiyo walxaha.

Hababkani waxay kuu oggolaanayaan inaad kala soo baxdo doorsoomayaasha Python sida xadhig ama durdurro ahaan.

  • GetVariable(variable, serialization, .stream, useString) -heli serialization isbeddel variable Π² stream. Hadday useString waa 1 oo taxanaha ayaa la saarayaa xadhig, ka dibna xadhig ayaa la soo celinayaa ee maaha durdurro.
  • GetVariableJson(variable, .stream, useString) - Hel JSON taxane doorsoome.
  • GetVariablePickle(variable, .stream, useString, useDill) -hel Pickle (ama dill) oo taxane ah doorsoome.

Aan isku dayno inaan helno doorsoomkeena y.

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

InterSystems IRIS -> Python

Soo dejinta xogta InterSystems IRIS ee Python.

  • ExecuteQuery(query, variable, type, namespace) - abuuraa xog-ururin (pandas dataframe ama list) laga bilaabo weydiinta sql oo u dejisa doorsoome Python ah variable. Bac caag ah isc.py waa in laga helaa aagga namespace - Codsiga waxaa lagu fulin doonaa halkaas.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - culeyska xogta caalamiga ah global laga bilaabo subscript start si ay u end Python sida doorsoome nooc ah type: list, ama pandas dataframe. Sharaxaada doodaha ikhtiyaariga ah mask iyo labels laga heli karo dukumeenti fasalka iyo kaydka Dokumentiyada Wareejinta Xogta.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - culeyska xogta fasalka class ka id start si ay u end Python sida doorsoome nooc ah type: list, ama pandas dataframe. properties - liis (oo ay ku kala qaybsan yihiin comma) ee guryaha fasalka ee u baahan in lagu shubo xogta. Maaskaro la taageeray * ΠΈ ?. Asal ahaan - * (dhammaan hantida). Hanti %%CLASSNAME la iska indhatiray.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - culeyska xogta miiska table ka id start si ay u end ee Python.

ExecuteQuery - universal (waxaad kasta oo sax ah SQL waxa loo gudbin doonaa Python). Si kastaba ha ahaatee, ExecuteGlobal iyo duubabkeeda ExecuteClass ΠΈ ExecuteTable la shaqeeyo dhowr xayiraad. Aad bay uga dheereeyaan (3-5 jeer ka dheereeya darawalka ODBC iyo 20 jeer ka dheereeya ExecuteQuery). Macluumaad dheeraad ah at Dokumentiyada Wareejinta Xogta.
Dhammaan hababkan waxay taageeraan wareejinta xogta meel kasta. Bac caag ah isc.py waa in laga helaa aagga la beegsanayo.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - U wareejinta natiijooyinka su'aal kasta oo SQL ah oo sax ah Python. Tani waa habka ugu gaabis ah ee wareejinta xogta. Isticmaal haddii ExecuteGlobal duubabkeedana lama hayo.

Doodaha:

  • query - su'aal sql.
  • variable - magaca doorsoomiyaha Python kaas oo xogta lagu qoray.
  • type - list ama Pandas dataframe.
  • namespace - aagga codsiga lagu fulin doono.

FulintaGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - ku gudubta caalami ah Python.

Doodaha:

  • global - magac caalami ah oo aan lahayn ^
  • variable - magaca doorsoomiyaha Python kaas oo xogta lagu qoray.
  • type - list ama Pandas dataframe.
  • start - liiska ugu horreeya ee caalamiga ah. Waa daruuri %Integer.
  • end - liiska ugu dambeeya ee caalamiga ah. Waa daruuri %Integer.
  • mask - maaskaro qiimaha caalamiga ah. Maaskarada ayaa noqon karta mid ka gaaban tirada goobaha caalamiga ah (haddii ay dhacdo in beeraha dhamaadka la boodi doono). Sida loo qaabeeyo maaskaro:
    • + u dhaaf qiimaha sida uu yahay.
    • - qiimaha ka boodo.
    • b - Nooca Boolean (0 - False, inta kale oo dhan - True).
    • d - Taariikhda (laga bilaabo $ horolog, on Windows laga bilaabo 1970, Linux laga bilaabo 1900).
    • t - Waqtiga ($ horolog, ilbiriqsi ka dib saqda dhexe).
    • m - Jadwalka wakhtiga (qaabka qaabaysan SANAD-BILI-MAALIN SAACADDA: DAQIIQADII: LABAAD).
  • labels - %Liiska magacyada tiirarka. Cunsurka koowaad waa magaca qoraalka.
  • namespace - aagga codsiga lagu fulin doono.

ExecuteClass

Isku soo duub ExecuteGlobal. Iyada oo ku saleysan qeexida fasalka, waxay diyaarisaa wicitaan ExecuteGlobal oo u yeedha.

ExecuteClass(class, variable, type, start, end, properties, namespace) - gudbinta xogta fasalka Python.

Doodaha:

  • class - magaca fasalka
  • variable - magaca doorsoomiyaha Python kaas oo xogta lagu qoray.
  • type - list ama Pandas dataframe.
  • start - aqoonsiga bilowga.
  • end - final Id
  • properties - liis (oo ay ku kala qaybsan yihiin comma) ee guryaha fasalka ee u baahan in lagu shubo xogta. Maaskaro la taageeray * ΠΈ ?. Asal ahaan - * (dhammaan hantida). Hanti %%CLASSNAME la iska indhatiray.
  • namespace - aagga codsiga lagu fulin doono.

Dhammaan guryaha waa la ansixiyay marka laga reebo nooca guryaha %Date, %Time, %Boolean ΠΈ %TimeStamp - waxaa loo rogaa fasalada Python ee u dhigma.

Executable

Isku soo duub ExecuteClass. Wuxuu u turjumayaa magaca miiska magaca fasalka iyo wicitaanada ExecuteClass. Saxeexa:

ExecuteTable(table, variable, type, start, end, properties, namespace) - U gudbinta xogta miiska Python.

Doodaha:

  • table - magaca miiska.
    Dhammaan doodaha kale waxaa loo gudbiyaa sida ay tahay ExecuteClass.

Xusuusin

  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable si degdeg ah u shaqeeyo si siman.
  • ExecuteGlobal 20 jeer ka dheereeya ExecuteQuery on sets xogta waaweyn (waqtiga wareejinta>0.01 seconds).
  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable ka shaqeyso qaab-dhismeedkan caalamiga ah: ^global(key) = $lb(prop1, prop2, ..., propN) halkaas oo key - isku-darka
  • Si aad u ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable qiimaha kala duwan ee la taageeray %Date u dhiganta kala duwanaansho mktime waxayna kuxirantahay OS (daaqadaha: 1970-01-01, Linux 1900-01-01, Mac). Isticmaal %TimeStampin lagu wareejiyo xogta ka baxsan xadkan ama isticmaal pandas dataframe sababtoo ah kani waa liis-kaliya xaddid.
  • Si aad u ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable dhammaan doodaha marka laga reebo isha xogta (caalami, fasalka ama miiska) iyo doorsoomayaasha waa ikhtiyaari.

tusaalooyin

Imtixaan fasalka isc.py.tijaabada.Qofka ka kooban yahay hab muujinaya dhammaan xulashooyinka wareejinta xogta:

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)

Wac habka do ##class(isc.py.test.Person).Test() si aad u aragto sida dhammaan hababka wareejinta xogta u shaqeeyaan.

Hababka Caawinta

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - Hel xog ku saabsan doorsoomaha: haddii la qeexay, heerka uu ku fadhiyo iyo dhererka taxanaha.
  • GetVariableDefined(variable, .defined) - doorsoomaha in la qeexay iyo in kale.
  • GetVariableType(variable, .type) - hel fasalka doorsoomayaasha.
  • GetStatus() - Hel oo ka saar marka laga reebo ugu dambeeya ee dhinaca Python.
  • GetModuleInfo(module, .imported, .alias) - hel doorsoomiyaha moduleka iyo heerka soo dejinta.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - hel macluumaadka ku saabsan shaqada.

wada shaqayn

Waxaad baratay sida loogu yeero Python Gateway laga bilaabo terminalka, hadda aan bilowno isticmaalkeeda xagga wax soo saarka. Saldhigga la falgalka Python ee qaabkan waa isc.py.ens.Operation. Waxay noo ogolaanaysaa:

  • Ku fuli koodka Python
  • Keydi/soo celi macnaha guud ee Python
  • Soo rar oo ka hel xogta Python

Asal ahaan, hawlgalka Python waa duubka isc.py.Main. Hawlgalka isc.py.ens.Operation waxay siisaa awooda la falgalka nidaamka Python ee alaabada InterSystems IRIS. Shan su'aalood ayaa la taageeray:

  • isc.py.msg.ExecutionRequest si loo fuliyo code Python. Soo noqda isc.py.msg.ExecutionResponse oo leh natiijada fulinta iyo qiyamka doorsoomayaasha la codsaday.
  • isc.py.msg.StreamExecutionRequest si loo fuliyo code Python. Soo noqda isc.py.msg.StreamExecutionResponse natiijada fulinta iyo qiyamka doorsoomayaasha la codsaday. Analogue isc.py.msg.ExecutionRequest, laakiin aqbala oo soo celisa durdurrada halkii ay ka ahaan lahayd xadhig.
  • isc.py.msg.QueryRequest si loo gudbiyo natiijada fulinta weydiinta SQL. Soo noqda Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest gudbinta xogta caalamiga ah/heer/miiska. Soo noqda Ens.Response.
  • isc.py.msg.SaveRequest si loo badbaadiyo macnaha Python. Soo noqda Ens.StringResponse oo wata aqoonsiga guud.
  • isc.py.msg.RestoreRequest si loo soo celiyo macnaha Python.

    Intaas waxaa sii dheer, isc.py.ens.Operation waxay leedahay laba hab:

    • Initializer - xulashada fasalka fulinaya interface-ka isc.py.init.Abstract. Waxaa loo isticmaali karaa in lagu shubo hawlaha, modules, fasallada, iwm. Waxa la fuliyaa hal mar marka hawshu bilaabato.
    • PythonLib - (Linux kaliya) haddii aad aragto khaladaad marka la soo shubayo, u deji qiimaheeda libpython3.6m.so ama xitaa jidka buuxa ee maktabadda Python.

Abuuritaanka hababka ganacsiga

Waxaa jira laba qaybood oo diyaar ah oo fududeeya horumarinta hababka ganacsiga:

  • isc.py.ens.ProcessUtils Waxay kuu ogolaanaysaa inaad ka soo saarto qoraalada waxqabadyada beddelka doorsooma.
  • isc.py.util.BPEmulator waxay sahlaysaa in lagu tijaabiyo hababka ganacsiga Python. Waxay fulin kartaa habka ganacsiga (Python parts) habka hadda socda.

Beddelka Beddelka ah

Dhammaan hababka ganacsiga ee laga dhaxlo isc.py.ens.ProcessUtils, isticmaali kartaa habka GetAnnotation(name) si aad u heshid qiimaha sharraxaadda hawsha magaceeda. Sharaxaada waxqabadka waxa ku jiri kara doorsoomayaal lagu xisaabin doono dhinaca InterSystems IRIS ka hor inta aan loo gudbin Python. Halkan waxaa ah ereyga beddelka doorsooma:

  • ${class:method:arg1:...:argN} - habka wac
  • #{expr} - ku fuli koodka luqadda ObjectScript.

Tusaale ayaa laga heli karaa habka ganacsiga tijaabada isc.py.test.Process, tusaale ahaan, dhaqdhaqaaqa Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Tusaalahan:

  • #{process.WorkDirectory} soo celisaa Hantida WorkDirectory ee shayga process, taas oo ah tusaale fasalka isc.py.test.Process kuwaas. habka ganacsiga hadda.
  • ${%PopulateUtils:Integer:1:100} wuxuu ugu yeeraa hab Integer fasalka %PopulateUtils, doodaha gudbinaya 1 ΠΈ 100, soo celinta tiro aan toos ahayn oo kala duwan 1...100.

Tijaabi habka ganacsiga

Tijaabada badeecadaha iyo hababka ganacsiga tijaabada ah ayaa loo heli karaa si caadi ah iyada oo qayb ka ah Python Gateway. Si aad u isticmaasho:

  1. Terminalka OS, ku orod: pip install pandas matplotlib seaborn.
  2. Gudaha InterSystems IRIS, ku orod: do ##class(isc.py.test.CannibalizationData).Import() si loo buuxiyo xogta imtixaanka.
  3. Soo saar alaabta isc.py.test.Production.
  4. U dir nooca codsiga Ens.Request Π² isc.py.test.Process.

Aan aragno sida ay u wada shaqeeyaan. Furan isc.py.test.Process ku jira tifaftiraha BPL:

Python Gateway gudaha InterSystems IRIS

Xeerka Fulinta

Caqabadda ugu muhiimsan waa fulinta koodka Python:

Python Gateway gudaha InterSystems IRIS

Weydiinta la isticmaalay isc.py.msg.ExecutionRequest, waa kuwan hantideeda:

  • Code - Python code.
  • SeparateLines - in koodhka loo qaybiyo khadadka fulinta. $c(10) (n) waxaa loo isticmaalaa in lagu kala saaro xargaha. Fadlan ogow in aan lagu talineynin in fariinta oo dhan halmar laga shaqeeyo, shaqadan waxaa loogu talagalay kaliya in lagu shaqeeyo def iyo tibaaxo badan oo la mid ah. Asal ahaan 0.
  • Variables - liiska doorsoomayaasha oo kala go'ay kuwaas oo lagu dari doono jawaabta.
  • Serialization - Sida loo kala saaro doorsoomayaasha aan rabno inaan soo celinno. Ikhtiyaarada Str, Repr, JSON, Pickle ΠΈ Dill, default Str.

Xaaladeena, waxaan dejineynaa hantida kaliya Code, sidaas darteed dhammaan guryaha kale waxay isticmaalaan qiimaha caadiga ah. Waxaan u dejinay adigoo wacaya process.GetAnnotation("Import pandas"), kaas oo wakhtiga runtime soo celisa sharraxaad ka dib beddelka doorsoome ee la sameeyay. Ka dib oo dhan, code import pandas as pd waxaa loo gudbin doonaa Python. GetAnnotation waxaa laga yaabaa inay faa'iido u leedahay helitaanka qoraallada Python-ka badan, laakiin ma jiraan wax xaddidaad ah oo ku saabsan habkan helitaanka koodka. Waxaad dejin kartaa hantida Code si kasta oo kugu habboon.

Helitaanka Isbeddellada

Caqabad kale oo xiiso leh oo la adeegsanayo isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway gudaha InterSystems IRIS

Waxay xisaabinaysaa Matrixka isku xidhka dhinaca Python waxayna soo saartaa doorsoomayaasha corrmat dib ugu noqo InterSystems IRIS ee qaabka JSON adoo dejinaya guryaha codsiga:

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

Waxaan natiijooyinka ku arki karnaa Raadraaca Muuqaalka:

Python Gateway gudaha InterSystems IRIS

Oo haddii aan uga baahanahay qiimahan BP, waxaan ku heli karnaa sidan: callresponse.Variables.GetAt("corrmat").

Gudbinta Xogta

Marka xigta, aan ka hadalno ku wareejinta xogta InterSystems IRIS ilaa Python; dhammaan codsiyada wareejinta xogta waxay hirgeliyaan is-dhexgalka isc.py.msg.DataRequestkaas oo bixiya sifooyinka soo socda:

  • Variable - doorsoome Python kaas oo xogta lagu qoro.
  • Type - nooc doorsooma: dataframe (pandas dataframe) ama list.
  • Namespace - aagga aan xogta ka helno. Bac caag ah isc.py waa in laga helaa aaggan. Tani waxay noqon kartaa aag aan lahayn taageerada alaabta.

Iyada oo ku saleysan interface-kan, 4 nooc oo codsiyo ah ayaa la fuliyay:

  • isc.py.msg.QueryRequest - dejiso hantida Query in loo diro su'aal SQL ah.
  • isc.py.msg.ClassRequest - dejiso hantida Class si loo gudbiyo xogta fasalka.
  • isc.py.msg.TableRequest - hantida dhigay Table si loo wareejiyo xogta miiska.
  • isc.py.msg.GlobalRequest - hantida dhigay Global u wareejinta xogta caalamiga ah.

Habka tijaabada, fiiri hawsha RAWhalkaas oo isc.py.msg.QueryRequest lagu muujiyay ficil.

Python Gateway gudaha InterSystems IRIS

Kaydinta/soo celinta macnaha Python

Ugu dambeyntii, waxaan ku badbaadin karnaa macnaha Python gudaha InterSystems IRIS, si tan loo sameeyo waxaan soo diri doonaa isc.py.msg.SaveRequest oo leh doodo:

  • Mask - Kaliya doorsoomayaal u dhigma maaskarada ayaa la keydiyaa. Taageeray * ΠΈ ?. Tusaale: "Data*, Figure?". Asal ahaan *.
  • MaxLength - Dhererka ugu badan ee doorsoomaha kaydsan. Haddii taxanaha doorsoomuhu uu dheeraado, waa la iska indhatiray. U deji 0 si aad u hesho doorsoomayaasha dherer kasta. Asal ahaan $$$MaxStringLength.
  • Name - Magaca macnaha guud (ikhtiyaar).
  • Description - Sharaxaada macnaha guud (ikhtiyaar).

Soo noqda Ens.StringResponse с Id macnaha guud badbaadiyay. Habka tijaabada, fiiri hawsha Save Context.

Codsiga la xidhiidha isc.py.msg.RestoreRequest waxay ka soo raraysaa macnaha guud ee InterSystems IRIS una galisay Python:

  • ContextId - aqoonsiga macnaha guud.
  • Clear - nadiifi macnaha guud ka hor inta aanad soo celin.

Jupyter notebook

Jupyter notebook waa codsi shabakadeed il furan kaas oo kuu ogolaanaya inaad abuurto oo aad daabacdo buug-yaraha oo ka kooban kood, muuqaal iyo qoraal. Python Gateway wuxuu kuu ogolaanayaa inaad aragto oo aad wax ka beddesho hababka BPL ee qaabka Jupyter Notebook. Fadlan ogow in fuliyaha caadiga ah ee Python 3 hadda la isticmaalo.

Kordhintaani waxay u malaynaysaa in tafsiirku ka kooban yahay koodka Python oo uu u isticmaalo magacyo hawleed magacyo hore. Hadda waa suurtogal in lagu horumariyo hababka ganacsiga PythonGateway ee Jupyter Notebook. Waa kuwan waxa suurtagal ah:

  • Abuur habab ganacsi oo cusub
  • Tirtir hababka ganacsiga
  • Abuur hawlo cusub
  • Beddel hawlaha
  • Tirtir hawlaha

halkan muuqaal muuqaal ah. Iyo dhawr shaashadood:

Habka Explorer

Python Gateway gudaha InterSystems IRIS

Tifaftiraha habsocodka

Python Gateway gudaha InterSystems IRIS

Ku rakibida

  1. Waxaad u baahan doontaa InterSystems IRIS 2019.2+.
  2. Ku rakib PythonGateway v0.8+ (kaliya ayaa loo baahan yahay isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints ΠΈ isc.py.ens.ProcessUtils).
  3. Ka cusboonaysii koodka ObjectScript ee kaydka
  4. Dil do ##class(isc.py.util.Jupyter).Install() oo raac tilmaamaha.

Dukumentiyada.

natiijooyinka

MLToolkit waa qalabyo kala duwan oo hadafkoodu yahay in la isku daro moodallo iyo deegaan wax kala iibsi si moodooyinka la dhisay si sahal ah loogu isticmaali karo habsocodka ganacsigaaga. Python Gateway waa qayb ka mid ah MLToolkit waxayna siisaa is dhexgalka luqadda Python, taasoo kuu ogolaaneysa inaad abaabulto algorithms kasta oo mashiinka lagu barto Python (jawiga ugu muhiimsan ee saynisyahano badan oo xog ah), adeegso maktabado badan oo diyaarsan si aad si dhakhso leh u abuurto laqabsi, falanqaynta robotic AI / Xalalka ML ee madal InterSystems IRIS.

tixraacyada

MLToolkit

Kooxda isticmaala MLToolkit waa kaydka GitHub gaar ah oo loo sameeyay qayb ka mid ah ururka InterSystems ee GitHub. Waxaa loogu talagalay isticmaalayaasha dibadda ah ee rakiba, barta, ama isticmaalaya qaybaha MLToolkit, oo ay ku jiraan Python Gateway. Kooxdu waxay leedahay kiisas badan oo la fuliyay (oo leh koodka isha iyo xogta tijaabada) ee dhinacyada suuq-geynta, wax-soo-saarka, daawada iyo warshado kale oo badan. Si aad ugu biirto Kooxda Isticmaalaha Qalabka ML, fadlan iimayl gaaban u soo dir ciwaanka soo socda: [emailka waa la ilaaliyay] oo ku dar macluumaadka soo socda warqadaada:

  • GitHub username
  • Ururka (waad shaqeysaa ama baraneysaa)
  • Booska (mawqifkaaga dhabta ah ee ururkaaga, ama "Student" ama "Madax-bannaan").
  • dalka

Kuwa akhriyey maqaalka oo xiisaynaya awoodaha InterSystems IRIS oo ah goob lagu horumariyo ama lagu martigeliyo sirdoonka macmal iyo makiinadaha barashada mashiinka, waxaan kugu martiqaadeynaa inaad ka hadasho xaaladaha suurtagalka ah ee xiisaha u leh ganacsigaaga. Waxaan ku farxi doonaa inaan falanqeyno baahiyaha shirkaddaada oo aan si wadajir ah u go'aamino qorshe hawleed; Ciwaanka emailka lagula xidhiidho kooxda khabiirka AI/ML - [emailka waa la ilaaliyay].

Source: www.habr.com

Add a comment