Python Gateway ho InterSystems IRIS

Sengoliloeng sena se mabapi le Python Gateway, projeke ea sechaba ea mohloli o bulehileng bakeng sa sethala sa data sa InterSystems IRIS. Morero ona o u lumella ho hlophisa li-algorithms tsa ho ithuta tsa mochini tse entsoeng ho Python (tikoloho e ka sehloohong bakeng sa Bo-rasaense ba bangata ba Data), sebelisa lilaebrari tse ngata tse itokiselitseng ho theha ka potlako litharollo tsa AI / ML tse feto-fetohang, tsa liroboto sethaleng sa InterSystems IRIS. Sehloohong sena, ke tla bonts'a hore na InterSystems IRIS e ka hlophisa lits'ebetso joang ho Python, ho buisana hantle ka lintlha tse peli, le ho theha lits'ebetso tse bohlale tsa khoebo.

Etsa moralo

  1. Selelekela.
  2. Lisebelisoa.
  3. Kenya
  4. API.
  5. Tšebelisano-'moho.
  6. Jupyter Notebook.
  7. Liphello.
  8. Lihokelo.
  9. MLToolkit.

Selelekela

Python ke puo ea maemo a holimo, e sebelisoang molemong oa kakaretso e reretsoeng ho ntlafatsa tlhahiso ea bahlahisi le ho baloa ha khoutu. Letotong lena la lihlooho, ke tla tšohla menyetla ea ho sebelisa Python sethaleng sa InterSystems IRIS, 'me sepheo se seholo sa sehlooho sena ke tšebeliso ea Python e le puo ea ho theha le ho tsamaisa mehlala ea ho ithuta mochine.

Ho ithuta ka mochini (ML) ke sehlopha sa mekhoa ea bohlale ba maiketsetso, eo tšobotsi ea eona e seng tharollo e tobileng ea bothata, empa ho ithuta ka mokhoa oa ho rarolla mathata a mangata a tšoanang.

Mekhoa ea ho ithuta ka mochini le mefuta e ntse e ata. Ho na le mabaka a mangata a sena, empa tsohle li theohile ho fihlelleheng, bonolo le ho fihlela liphetho tse sebetsang. Na clustering kapa neural network modelling ke theknoloji e ncha?

Ha e le hantle ha ho joalo, empa matsatsing ana ha ho hlokahale hore u ngole mela e makholo a likete tsa khoutu ho tsamaisa mohlala o le mong, 'me litšenyehelo tsa ho bōpa le ho sebelisa mehlala li ntse li fokotseha.

Lisebelisoa li ntse li tsoela pele - ha re se na lisebelisoa tsa AI / ML ka botlalo tsa GUI-centric, tsoelo-pele eo re e boneng ka lihlopha tse ling tse ngata tsa lisebelisoa tsa tlhahisoleseding, tse kang BI (ho tloha ho khoutu ea ho ngola ho ea ho sebelisa mekhoa le litharollo tsa GUI-centric configurable) e boetse e bonoa lisebelisoa tsa ho theha AI/ML. Re se re fetile mothating oa ho ngola khoutu mme kajeno re sebelisa meralo ho aha le ho koetlisa mehlala.

Lintlafatso tse ling, joalo ka bokhoni ba ho aba mohlala o koetlisitsoeng esale pele moo mosebelisi oa ho qetela a tlamehang ho qeta ho koetlisa mohlala ho data ea bona e ikhethileng, le ona o etsa hore ho be bonolo ho qala ka ho ithuta ka mochini. Tsoelopele ena e etsa hore ho ithuta ka mochini oa ho ithuta ho be bonolo haholo ho litsebi le lik'hamphani ka kakaretso.

Ka lehlakoreng le leng, re ntse re bokella lintlha tse ngata. Ka sethala sa data se kopaneng joalo ka InterSystems IRIS, tlhahisoleseling ena kaofela e ka lokisoa hang-hang mme ea sebelisoa e le ho kenya letsoho mefuteng ea ho ithuta ea mochini.

Ka ho fallela marung, ho qala merero ea AI/ML ho ntse ho ba bonolo ho feta leha e le neng pele. Re ka sebelisa feela lisebelisoa tseo re li hlokang. Ho feta moo, ka lebaka la parallelization e fanoang ke sethala sa maru, re ka boloka nako e sebelisitsoeng.

Empa ho thoe’ng ka liphello? Mona ke moo lintho li ba thata le ho feta. Ho na le lisebelisoa tse ngata bakeng sa mehlala ea kaho, eo ke tla e tšohla nakong e tlang. Ho haha ​​mohlala o motle ha ho bonolo, empa ho latela eng? Ho etsa phaello ka ho sebelisa mokhoa oa khoebo le hona ke mosebetsi o sa reng letho. Motso oa bothata ke karohano ea mesebetsi ea tlhahlobo le ea transaction, le mehlala ea data. Ha re koetlisa mohlala, hangata re e etsa ka data ea histori. Empa sebaka sa mohlala o hahiloeng ke ts'ebetsong ea data ea transaction. Na ho na le molemo ofe oa mofuta o motle ka ho fetisisa oa ho lemoha transaction oa bolotsana haeba re o tsamaisa hang ka letsatsi? Baqhekelli ke khale ba tsamaile le chelete. Re hloka ho koetlisa mohlala ho data ea nalane, empa hape re hloka ho e sebelisa ka nako ea nnete ho data e ncha e kenang e le hore lits'ebetso tsa rona tsa khoebo li ka nka khato ho latela likhakanyo tse entsoeng ke mohlala.

ML Toolkit ke sehlopha sa lisebelisoa tse ikemiselitseng ho etsa joalo: ho kopanya mehlala le tikoloho ea transaction e le hore mefuta e hahiloeng e ka sebelisoa habonolo lits'ebetsong tsa hau tsa khoebo. Python Gateway ke karolo ea ML Toolkit mme e fana ka kopanyo le puo ea Python (e ts'oanang le kamoo R Gateway, ho ba karolo ea ML Toolkit e fanang ka kopanyo le puo ea R).

Lebokose la lithulusi

Pele re tsoela pele, ke kopa ho hlalosa lisebelisoa tse 'maloa tsa Python le lilaebrari tseo re tla li sebelisa hamorao.

ea theknoloji

  • Python ke puo e fetoletsoeng, ea boemo bo holimo, e sebelisoang ka kakaretso. Monyetla o ka sehloohong oa puo ke laeborari ea eona e kholo ea lilaebrari tsa lipalo, ML le AI. Joalo ka ObjectScript, ke puo e shebaneng le ntho e itseng, empa ntho e ngoe le e ngoe e hlalosoa ka matla ho fapana le ho latela maemo. Hape ntho e 'ngoe le e' ngoe ke ntho. Lingoliloeng tsa morao-rao li tloaelane le puo eo. Haeba u batla ho qala ho ithuta, ke khothaletsa ho qala ka litokomane.
  • Bakeng sa lithupelo tsa rona tse latelang, beha Python 3.6.7 64 bit.
  • IDE: Kea sebelisa PyCharm, empa ka kakaretso ba много. Haeba u sebelisa Atelier, ho na le plugin ea Eclipse bakeng sa baetsi ba Python. Haeba u sebelisa VS Code, ho na le katoloso ea Python.
  • Notebook: Sebakeng sa IDE, o ka ngola le ho arolelana mangolo a hau libukeng tsa marang-rang. E tummeng ka ho fetisisa ho tsona ke jupyter.

Lilaebrari

Mona ke lethathamo (le sa fellang) la lilaeborari tsa ho ithuta ka mochini:

  • numpy - sephutheloana sa motheo bakeng sa lipalo tse nepahetseng.
  • pandas - meaho ea ts'ebetso e phahameng ea ts'ebetso le lisebelisoa tsa tlhahlobo ea data.
  • Matlotlib - popo ea li-graph.
  • Seaborn - pono ea data e thehiloeng ho matplotlib.
  • Sklearn - mekhoa ea ho ithuta ka mochine.
  • XGBoost - li-algorithms tsa ho ithuta ka mochini ka har'a moralo oa mokhoa oa ho matlafatsa gradient.
  • Gensim - NLP.
  • Keras - marang-rang a neural.
  • ho phalla ha tensor - sethala sa ho theha mehlala ea ho ithuta ka mochini.
  • PyTorch ke sethala sa ho theha mehlala ea ho ithuta ka mochini, e shebaneng le Python.
  • Nyoka - PMML ho tsoa ho mefuta e fapaneng.

Theknoloji ea AI/ML e etsa hore khoebo e sebetse hantle le ho ikamahanya le maemo. Ho feta moo, kajeno theknoloji ena e ntse e e-ba bonolo ho e ntlafatsa le ho e sebelisa. Qala ho ithuta ka mahlale a AI/ML le hore na a ka thusa mokhatlo oa hau joang ho hola.

bophirima

Ho na le mekhoa e mengata ea ho kenya le ho sebelisa Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Sebelisa setšoantšo se tsoang ho DockerHub
    • Iketsetse chebahalo ea hau

Ho sa tsotelehe mokhoa oa ho kenya, o tla hloka khoutu ea mohloli. Sebaka feela sa ho jarolla khoutu ke leqephe la litokollo. E na le litokollo tse lekiloeng tse tsitsitseng, nka tsa morao-rao feela. Hajoale ke 0.8, empa ha nako e ntse e ea ho tla ba le tse ncha. Se ke oa kopanya / khoasolla polokelo, khoasolla tokollo ea morao-rao.

OS

Haeba u kenya Python Gateway tsamaisong ea ts'ebetso, joale pele (ho sa tsotellehe mokhoa oa ho sebetsa) o hloka ho kenya Python. Molemong oa sena:

  1. Kenya Python 3.6.7 64 bit. Ho khothalletsoa ho kenya Python bukeng ea kamehla.
  2. Kenya module dill: pip install dill.
  3. Khoasolla khoutu ea ObjectScript (ke hore. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) sebakeng sefe kapa sefe se nang le lihlahisoa. Haeba u batla sebaka se seng se le teng ho tšehetsa lihlahisoa, tsamaisa: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Sebaka lets'oao la DLL/SO/DYLIB ho tsamaisetsa foldareng bin mohlala oa hau oa InterSystems IRIS. Faele ea laebrari e tlameha ho ba teng tseleng e khutlisitsoeng write ##class(isc.py.Callout).GetLib().

Windows

  1. Etsa bonnete ba hore tikoloho e fetoha PYTHONHOME lintlha ho Python 3.6.7.
  2. Etsa bonnete ba hore tikoloho ea tsamaiso e fetoha PATH e na le phetoho PYTHONHOME (kapa bukana eo e e supang).

Linux (Debian/Ubuntu)

  1. Hlahloba hore na tikoloho e feto-fetohang e PATH e na le /usr/lib и /usr/lib/x86_64-linux-gnu. Sebelisa faele /etc/environment ho seta diphapano tsa tikoloho.
  2. Haeba ho na le liphoso undefined symbol: _Py_TrueStruct beha maemo PythonLib. hape ho Readme ho na le karolo ea ho rarolla mathata.

Mac

  1. Hona joale ke Python 3.6.7 feela e tšehetsoeng python.org. Sheba phapang PATH.

Haeba u fetotse mefuta e fapaneng ea tikoloho, qala sehlahisoa sa hau sa InterSystems bocha.

Docker

Ho sebelisa li-container ho na le melemo e mengata:

  • Portability
  • Katleho
  • Ho kenya letsoho
  • Khanya
  • Ho se fetohe

Sheba sena letoto la lihlooho bakeng sa tlhaiso-leseling e batsi mabapi le ho sebelisa Docker ka lihlahisoa tsa InterSystems.

Mehaho eohle ea Python Gateway hajoale e thehiloe ka lijana 2019.4.

Setšoantšo se loketseng

Matha: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestho khoasolla le ho tsamaisa Python Gateway ka InterSystems IRIS Community Edition. Ke phetho.

Iketsetse chebahalo ea hau

Ho theha setšoantšo sa docker, matha motso oa polokelo: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Ka ho sa feleng, setšoantšo se hahiloe ho latela setšoantšo store/intersystems/iris-community:2019.4.0.383.0, leha ho le joalo o ka fetola sena ka ho beha phetoho IMAGE.
Ho haha ​​​​ho tloha ho InterSystems IRIS, matha: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Kamora moo, o ka tsamaisa setšoantšo sa docker:

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

Haeba u sebelisa setšoantšo se thehiloeng ho InterSystems IRIS Community Edition, u ka siea senotlolo.

Comments

  • Mokhoa oa teko isc.py.test.Process e boloka palo ea litšoantšo bukeng ea nakoana. U ka 'na ua batla ho fetola tsela ena ho directory e behiloeng. Ho etsa sena, fetola maemo WorkingDir ho totobatsa directory e kentsoeng.
  • Ho fihlella terminal matha: docker exec -it irispy sh.
  • Ho fihlella Portal Management System ka ho kena SuperUser/SYS.
  • Ho emisa setshelo, matha: docker stop irispy && docker rm --force irispy.

Ho netefatsa ho kenya

Ha u se u kentse Python Gateway, ho bohlokoa ho hlahloba hore na e ea sebetsa. Kenya khoutu ena ho terminal ea InterSystems IRIS:

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

Sephetho e lokela ho ba: HELLO - Boleng bo fapaneng ba Python x. Haeba boemo ba ho khutla sc ke phoso kapa var e se nang letho, hlahloba Readme - Karolo ea ho rarolla mathata.

API

Python Gateway e kentsoe 'me u netefalitse hore e ea sebetsa. Ke nako ea ho qala ho e sebelisa!
Sebopeho se seholo sa ho Python ke isc.py.Main. E fana ka lihlopha tse latelang tsa mekhoa (tsohle li khutlela %Status):

  • Phethahatso ea Khoutu
  • Phetiso ya data
  • Subsidiary

Phethahatso ea Khoutu

Mekhoa ena e u lumella ho etsa khoutu ea Python e sa sebetseng.

SimpleString

SimpleString - ena ke mokhoa o ka sehloohong. E hloka likhang tse 4 tsa boikhethelo:

  • code - mola oa khoutu o lokelang ho etsoa. Mohala oa phepelo: $c(10).
  • returnVariable — lebitso la phapano e tla kgutla.
  • serialization - mokhoa oa ho seriale returnVariable. 0 - khoele (ea kamehla), 1 - repr.
  • result - ByRef e bua ka phapang eo boleng bo ngotsoeng ho eona returnVariable.

Ka holimo re entse:

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

Mohlaleng ona, re abela mofuta oa Python x moelelo Hello mme o batla ho khutlisa boleng ba mofuta oa Python x ho mofuta oa ObjectScript var.

ExecuteCode

ExecuteCode ke mokhoa o sireletsehileng le o se nang lithibelo SimpleString.
Mehala e sethaleng sa InterSystems IRIS e lekantsoe ho litlhaku tse 3, 'me haeba u batla ho etsa khoutu e telele, u lokela ho sebelisa likhoele.
Likhang tse peli lia amoheloa:

  • code - mola kapa molapo oa khoutu ea Python e lokelang ho etsoa.
  • variable - (ho ikhethela) e fana ka sephetho sa ho bolaoa code mofuta ona oa Python.

Mohlala oa ho sebelisa:

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

Mohlaleng ona, re atisa 2 ka 3 ebe re ngola sephetho ho phapang ea Python y.

Phetiso ya data

Fetisa data ho ea le ho tsoa Python.

Python -> InterSystems IRIS

Ho na le mekhoa e 4 ea ho fumana boleng ba phetoho ea Python ho InterSystems IRIS, ho latela serialization eo u e hlokang:

  • String bakeng sa mefuta e bonolo ea data le debugging.
  • Repr bakeng sa ho boloka lintho tse bonolo le ho lokisa liphoso.
  • JSON bakeng sa ho qhekella ha data habonolo lehlakoreng la InterSystems IRIS.
  • Pickle ho boloka dintho.

Mekhoa ena e u lumella ho fumana mefuta e fapaneng ho tsoa ho Python joalo ka khoele kapa melapo.

  • GetVariable(variable, serialization, .stream, useString) - fumana serialization feto-fetoha variable в stream. Haeba useString ke 1 mme serialization e beoa khoeleng, ebe khoele e khutlisoa eseng molatsoana.
  • GetVariableJson(variable, .stream, useString) - fumana serialization ea JSON ea mofuta o fapaneng.
  • GetVariablePickle(variable, .stream, useString, useDill) -fumana Pickle (kapa Dill) serialization ea phetoho.

Ha re leke ho fumana phetoho ea rona y.

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

InterSystems IRIS -> Python

E kenya data ho tsoa ho InterSystems IRIS ho Python.

  • ExecuteQuery(query, variable, type, namespace) - e theha dataset (pandas dataframe kapa list) ho tsoa ho potso ea sql ebe e e beha ho mofuta oa Python variable. Mokotla oa polasetiki isc.py e tlameha ho ba teng sebakeng seo namespace - kopo e tla phethisoa moo.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - e jara data ea lefats'e global ho tsoa ho peeletso start ho end ho Python joalo ka mofuta o fapaneng type: list, kapa li-panda dataframe. Tlhaloso ea likhang tsa boikhethelo mask 'me labels e fumanehang ka har'a litokomane tsa sehlopha le polokelo Litokomane tsa Transfer Data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - e jara data ea sehlopha class ho tloha ho id start ho end ho Python joalo ka mofuta o fapaneng type: list, kapa li-panda dataframe. properties - lenane (le arotsoe ka liphegelwana) la thepa ea sehlopha e hlokang ho kengoa sete ea data. Li-mask li tšehelitsoe * и ?. Kamehla - * (thepa tsohle). Thepa %%CLASSNAME hlokomolohile.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - e jara data ea tafole table ho tloha ho id start ho end ho Python.

ExecuteQuery - bokahohleng (potso efe kapa efe e nepahetseng ea SQL e tla fetisetsoa ho Python). Leha ho le joalo, ExecuteGlobal le diphuthelwana tsa yona ExecuteClass и ExecuteTable sebetsa ka lithibelo tse ngata. Li potlakile haholo (ka makhetlo a 3-5 ka potlako ho feta mokhanni oa ODBC le makhetlo a 20 ka potlako ExecuteQuery). Lintlha tse ling ho Litokomane tsa Transfer Data.
Mekhoa ena kaofela e tšehetsa phetiso ea data ho tsoa sebakeng sefe kapa sefe. Mokotla oa polasetiki isc.py e tlameha ho ba teng sebakeng se shebiloeng.

PhethaQuery

ExecuteQuery(request, variable, type, namespace) - ho fetisetsa liphetho tsa potso efe kapa efe e nepahetseng ea SQL ho Python. Ona ke mokhoa o liehang ho fetisa data. E sebelise haeba ExecuteGlobal le liphutheloana tsa eona ha li fumanehe.

Likhang:

  • query - sql potso.
  • variable - lebitso la phetoho ea Python eo data e ngotsoeng ho eona.
  • type - list kapa pandas dataframe.
  • namespace - sebaka seo kopo e tla phethoa ho sona.

PhethaGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - ho fetisa lefats'e ho Python.

Likhang:

  • global - lebitso la lefats'e ntle le ^
  • variable - lebitso la phetoho ea Python eo data e ngotsoeng ho eona.
  • type - list kapa pandas dataframe.
  • start - karolo ea pele ea lefats'e. Ho hlokahala %Integer.
  • end - ngoliso ea ho qetela ea lefats'e. Ho hlokahala %Integer.
  • mask - mask a bohlokoa a lefats'e. Mask e ka ba khuts'oane ho feta palo ea masimo a lefats'e (e leng hore masimo a qetellong a tla tloloa). Mokhoa oa ho hlophisa mask:
    • + fetisa boleng kamoo bo leng kateng.
    • - tlola boleng.
    • b - Mofuta oa Boolean (0 - False, tse ling kaofela - True).
    • d - Letsatsi (ho tloha ho $horolog, ho Windows ho tloha 1970, ho Linux ho tloha 1900).
    • t - Nako ($ horolog, metsotsoana ka mor'a khitla).
    • m - Setempe sa nako (khoele ea sebopeho YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
  • labels — %Lenane la mabitso a kholomo. Karolo ea pele ke lebitso la mongolo.
  • namespace - sebaka seo kopo e tla phethoa ho sona.

ExecuteClass

Qetella ka holimo ExecuteGlobal. Ho itšetlehile ka tlhaloso ea sehlopha, lokisetsa pitso ExecuteGlobal mme a mmitsa.

ExecuteClass(class, variable, type, start, end, properties, namespace) - ho fetisa lintlha tsa sehlopha ho Python.

Likhang:

  • class - lebitso la sehlopha
  • variable - lebitso la phetoho ea Python eo data e ngotsoeng ho eona.
  • type - list kapa pandas dataframe.
  • start - ID ea ho qala.
  • end - Id ea ho qetela
  • properties - lenane (le arotsoe ka liphegelwana) la thepa ea sehlopha e hlokang ho kengoa sete ea data. Li-mask li tšehelitsoe * и ?. Kamehla - * (thepa tsohle). Thepa %%CLASSNAME hlokomolohile.
  • namespace - sebaka seo kopo e tla phethoa ho sona.

Thepa eohle e fetisoa joalo ka ha e le ntle le thepa ea mofuta %Date, %Time, %Boolean и %TimeStamp - li fetoloa litlelase tse tsamaellanang tsa Python.

ExecuteTable

Qetella ka holimo ExecuteClass. E fetolela lebitso la tafole ho lebitso la sehlopha le mehala ExecuteClass. Tshaeno:

ExecuteTable(table, variable, type, start, end, properties, namespace) - ho fetisetsa data ea tafole ho Python.

Likhang:

  • table - lebitso la tafole.
    Likhang tse ling kaofela li fetisitsoe joalo ka ho ExecuteClass.

Lintlha

  • ExecuteGlobal, ExecuteClass и ExecuteTable sebetsa ka potlako ka ho lekana.
  • ExecuteGlobal Ka makhetlo a 20 ka potlako ho feta ExecuteQuery ho sete e kholo ea data (nako ea phetisetso> metsotsoana e 0.01).
  • ExecuteGlobal, ExecuteClass и ExecuteTable sebetsa ho li-globals ka sebopeho sena: ^global(key) = $lb(prop1, prop2, ..., propN) moo key - palo e felletseng.
  • etsoe ExecuteGlobal, ExecuteClass и ExecuteTable mefuta e fapaneng ya boleng %Date e tsamaellana le mefuta mktime mme e ipapisitse le OS (lifensetere: 1970-01-01, file linux 1900-01-01, Mac). Sebelisa %TimeStampho fetisetsa data ka ntle ho sebaka sena kapa ho sebelisa pandas dataframe hobane sena ke moeli oa lethathamo feela.
  • etsoe ExecuteGlobal, ExecuteClass и ExecuteTable litsekisano tsohle ntle le mohloli oa data (lefatšeng, sehlopha kapa tafole) le tse fapaneng ke tsa boikhethelo.

mehlala

Sehlopha sa liteko isc.py.test.Motho e na le mokhoa o bonts'ang likhetho tsohle tsa phetiso ea data:

set global = "isc.py.test.PersonD"
set class = "isc.py.test.Person"
set table = "isc_py_test.Person"
set query = "SELECT * FROM isc_py_test.Person"

// Общие аргументы
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)

// Способ 0: ExecuteGlobal без аргументов
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)

// Способ 1: ExecuteGlobal с аргументами    
// При передаче глобала названия полей задаются вручную
// globalKey - название сабсткрипта 
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")

// mask содержит на 1 элемент меньше чем labels потому что "globalKey" - название сабскипта
// Пропускаем %%CLASSNAME
set mask = "-+dmt+++b"

set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)

// Способ 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)

// Способ 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)

// Способ 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)

Letsetsa mokhoa do ##class(isc.py.test.Person).Test() ho bona hore na mekhoa eohle ea phetisetso ea data e sebetsa joang.

Mekhoa ea Thuso

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - fumana leseli mabapi le phapang: hore na e hlalositsoe, sehlopha sa eona le bolelele ba serialization.
  • GetVariableDefined(variable, .defined) - hore na phapang e hlalositsoe.
  • GetVariableType(variable, .type) - fumana sehlopha sa mefuta e fapaneng.
  • GetStatus() - fumana le ho tlosa mokhelo oa ho qetela ka lehlakoreng la Python.
  • GetModuleInfo(module, .imported, .alias) — fumana ho feto-fetoha ha mojule le boemo ba ho reka kantle ho naha.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — fumana tlhahisoleseding mabapi le tshebetso.

Ts'ebelisano

U ithutile ho letsetsa Python Gateway ho tloha setsing sa ho qetela, joale ha re qaleng ho e sebelisa tlhahiso. Motheo oa ho sebelisana le Python ka mokhoa ona ke isc.py.ens.Operation. E re lumella:

  • Kenya khoutu ho Python
  • Boloka / Khutlisa moelelo oa Python
  • Laola 'me u fumane data ho tsoa ho Python

Ha e le hantle, ts'ebetso ea Python ke sekoaelo isc.py.Main. Tshebetso isc.py.ens.Operation e fana ka bokhoni ba ho sebelisana le ts'ebetso ea Python ho tsoa ho InterSystems lihlahisoa tsa IRIS. Lipotso tse hlano lia tšehetsoa:

  • isc.py.msg.ExecutionRequest ho kenya khoutu ea Python. E khutla isc.py.msg.ExecutionResponse ka sephetho sa ts'ebetso le boleng ba mefuta e batloang.
  • isc.py.msg.StreamExecutionRequest ho kenya khoutu ea Python. E khutla isc.py.msg.StreamExecutionResponse sephetho sa ts'ebetso le boleng ba mefuta e batiloeng. Analogue isc.py.msg.ExecutionRequest, empa e amohela le ho khutlisa melapo ho e-na le likhoele.
  • isc.py.msg.QueryRequest ho fetisetsa sephetho sa ho etsa potso ea SQL. E khutla Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest bakeng sa ho fetisa data ea lefats'e / sehlopha / tafole. E khutla Ens.Response.
  • isc.py.msg.SaveRequest ho boloka moelelo oa Python. E khutla Ens.StringResponse e nang le ID ea moelelo.
  • isc.py.msg.RestoreRequest ho tsosolosa moelelo oa Python.

    Ho phaella moo, isc.py.ens.Operation e na le li-setting tse peli:

    • Initializer — ho khetha sehlopha se sebelisang sebopeho isc.py.init.Abstract. E ka sebelisoa ho kenya mesebetsi, li-module, lihlopha, joalo-joalo. E phethisoa hang ha ts'ebetso e qala.
    • PythonLib - (Linux feela) haeba u bona liphoso ha u kenya, beha boleng ba eona ho libpython3.6m.so kapa esita le tseleng e felletseng ea ho ea laebraring ea Python.

Ho theha mekhoa ea khoebo

Ho na le lihlopha tse peli tse fumanehang tse thusang nts'etsopele ea mekhoa ea khoebo:

  • isc.py.ens.ProcessUtils e o lumella ho ntša litlatsetso ho tsoa mesebetsing ka mefuta e fapaneng.
  • isc.py.util.BPEmulator e etsa hore ho be bonolo ho lekola lits'ebetso tsa khoebo ka Python. E ka etsa ts'ebetso ea khoebo (likarolo tsa Python) ts'ebetsong ea hajoale.

Phapang e Fetohang

Mekhoa eohle ea khoebo e futsitsoeng ho isc.py.ens.ProcessUtils, e ka sebelisa mokhoa GetAnnotation(name) ho fumana boleng ba tlhaloso ea ketsahalo ka lebitso la eona. Tlhaloso ea ketsahalo e ka ba le mefuta-futa e tla baloa ka lehlakoreng la InterSystems IRIS pele e fetisetsoa ho Python. Mona ke syntax bakeng sa phetoho e fapaneng:

  • ${class:method:arg1:...:argN} - pitso ea mokhoa
  • #{expr} — etsa khoutu ka puo ya ObjectScript.

Mohlala o fumaneha ts'ebetsong ea khoebo ea liteko isc.py.test.Process, mohlala, mosebetsing Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Mohlala ona:

  • #{process.WorkDirectory} e khutlisetsa thepa ea WorkDirectory ea ntho eo process, e leng mohlala oa sehlopha isc.py.test.Process tseo. ts'ebetso ea hona joale ea khoebo.
  • ${%PopulateUtils:Integer:1:100} bitsa mokhoa Integer класса %PopulateUtils, ho fetisa likhang 1 и 100, e khutlisetsang palo e felletseng sebakeng seo 1...100.

Mokhoa oa khoebo oa teko

Lihlahisoa tsa liteko le mekhoa ea khoebo ea liteko li fumaneha ka mokhoa o ikhethileng e le karolo ea Python Gateway. Ho li sebelisa:

  1. Ho terminal ea OS, tsamaisa: pip install pandas matplotlib seaborn.
  2. Ho terminal ea InterSystems IRIS, matha: do ##class(isc.py.test.CannibalizationData).Import() ho tlatsa lintlha tsa teko.
  3. Qala lihlahisoa isc.py.test.Production.
  4. Romela mofuta oa kopo Ens.Request в isc.py.test.Process.

A re boneng hore na tsohle li sebetsa hammoho joang. Bula isc.py.test.Process ho mohlophisi oa BPL:

Python Gateway ho InterSystems IRIS

Phethahatso ea Khoutu

Phephetso ea bohlokoahali ke ho etsa khoutu ea Python:

Python Gateway ho InterSystems IRIS

Potso e sebelisitsoeng isc.py.msg.ExecutionRequest, lintlha tsa eona ke tsena:

  • Code - Khoutu ea Python.
  • SeparateLines — hore na o arola khoutu ka mela bakeng sa phethahatso. $c(10) (n) e sebedisoang ho arola dikgwele. Ka kopo hlokomela hore HA HO khothaletsoe ho sebetsana le molaetsa oohle ka nako e le 'ngoe, mosebetsi ona o reretsoe ho sebetsa feela def le lipolelo tse tšoanang tsa mela e mengata. Ea kamehla 0.
  • Variables — lenane le arohaneng la dikoma la diphapang tse tla ekeletswa karabong.
  • Serialization - Mokhoa oa ho hlophisa lintho tse fapaneng tseo re batlang ho li khutlisa. Likhetho: Str, Repr, JSON, Pickle и Dill, kamehla Str.

Tabeng ea rona, re beha thepa feela Code, kahoo lisebelisoa tse ling kaofela li sebelisa litekanyetso tsa kamehla. Re e beha ka ho letsa process.GetAnnotation("Import pandas"), eo ka nako ea ts'ebetso e khutlisetsang tlhaloso ka mor'a hore ho etsoe phetoho e fapaneng. Etsoe, khoutu import pandas as pd e tla fetisetsoa ho Python. GetAnnotation e ka ba molemo bakeng sa ho fumana mangolo a mangata a Python, empa ha ho na lithibelo mokhoa ona oa ho fumana khoutu. O ka seta thepa Code ka tsela efe kapa efe e loketseng uena.

Ho Fumana Liphetoho

Phephetso e 'ngoe e khahlisang ea ho sebelisa isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway ho InterSystems IRIS

E bala Correlation Matrix ka lehlakoreng la Python mme e ntša phapang corrmat khutlela ho InterSystems IRIS ka sebopeho sa JSON ka ho beha thepa ea kopo:

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

Re ka bona liphetho ho Visual Trace:

Python Gateway ho InterSystems IRIS

Mme haeba re hloka boleng bona ho BP, re ka bo fumana tjena: callresponse.Variables.GetAt("corrmat").

Phetiso ya data

E latelang, ha re bue ka ho fetisetsa data ho tloha ho InterSystems IRIS ho ea Python; likopo tsohle tsa phetisetso ea data li sebelisa sebopeho. isc.py.msg.DataRequeste fanang ka thepa e latelang:

  • Variable - mofuta oa Python oo data e ngotsoeng ho oona.
  • Type - mefuta e fapaneng: dataframe (pandas dataframe) kapa list.
  • Namespace - sebaka seo re fumanang data ho sona. Mokotla oa polasetiki isc.py e lokela ho ba teng sebakeng sena. Sena e ka 'na ea e-ba sebaka se se nang tšehetso ea lihlahisoa.

Ho ipapisitsoe le sebopeho sena, lihlopha tse 4 tsa likopo li kengoa tšebetsong:

  • isc.py.msg.QueryRequest - beha thepa Query ho romella potso ea SQL.
  • isc.py.msg.ClassRequest - beha thepa Class ho fetisa lintlha tsa sehlopha.
  • isc.py.msg.TableRequest - beha thepa Table ho fetisetsa data ea tafole.
  • isc.py.msg.GlobalRequest - beha thepa Global bakeng sa phetiso ea data lefatšeng ka bophara.

Ts'ebetsong ea teko, sheba ts'ebetso RAWkae isc.py.msg.QueryRequest e bontshwang ka ketso.

Python Gateway ho InterSystems IRIS

Ho boloka / Ho Khutlisa Moelelo oa Python

Qetellong, re ka boloka moelelo oa Python ho InterSystems IRIS, ho etsa sena re tla romela isc.py.msg.SaveRequest ka likhang:

  • Mask - Ho bolokiloe feela lintho tse lumellanang le mask. E tšehelitsoe * и ?. Mohlala: "Data*, Figure?". Ea kamehla *.
  • MaxLength - Bolelele bo boholo ba phapang e bolokiloeng. Haeba serialization ea phapang e le telele, e tla hlokomolohuoa. Beha 0 ho fumana mefuta e fapaneng ea bolelele bofe kapa bofe. Ea kamehla $$$MaxStringLength.
  • Name - Lebitso la moelelo (boikhethelo).
  • Description - Tlhaloso ea moelelo oa taba (ho ikhethela).

Ho khutla Ens.StringResponse с Id taba e bolokiloeng. Ts'ebetsong ea teko, sheba ts'ebetso Save Context.

Kopo e amanang isc.py.msg.RestoreRequest e jara moelelo oa litaba ho tloha ho InterSystems IRIS ho ea Python:

  • ContextId - sekhetho sa moelelo.
  • Clear - hlakola moelelo oa taba pele o tsosolosa.

Buka ea Jupyter

Buka ea Jupyter ke sesebelisoa sa websaete se bulehileng se u lumellang hore u thehe le ho phatlalatsa libukana tse nang le khoutu, lipono le mongolo. Python Gateway e u lumella ho sheba le ho hlophisa lits'ebetso tsa BPL ka mokhoa oa Jupyter Notebook. Ka kopo elelloa hore moetsi ea tloaelehileng oa Python 3 o sebelisoa hajoale.

Katoloso ena e nka hore litlatsetso li na le khoutu ea Python mme e sebelisa mabitso a ts'ebetso joalo ka lihlooho tse tlang pele. Hona joale hoa khoneha ho nts'etsapele lits'ebetso tsa khoebo tsa PythonGateway ho Jupyter Notebook. Mona ke se ka khonehang:

  • Theha mekhoa e mecha ea khoebo
  • Hlakola mekhoa ea khoebo
  • Etsa mesebetsi e mecha
  • Fetola mesebetsi
  • Hlakola mesebetsi

mona video ea demo. Le li-screenshots tse 'maloa:

Mokhoa oa ho hlahloba

Python Gateway ho InterSystems IRIS

Mohlophisi oa tšebetso

Python Gateway ho InterSystems IRIS

bophirima

  1. U tla hloka InterSystems IRIS 2019.2+.
  2. Kenya PythonGateway v0.8+ (e hlokahala feela isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Ntlafatsa khoutu ea ObjectScript ho tsoa sebakeng sa polokelo.
  4. Phethahatsa do ##class(isc.py.util.Jupyter).Install() ebe u latela likeletso.

Litokomane.

fumanoeng ke

MLToolkit ke sehlopha sa lisebelisoa tseo sepheo sa tsona e leng ho kopanya mehlala le tikoloho ea transaction e le hore mefuta e hahiloeng e ka sebelisoa habonolo lits'ebetsong tsa hau tsa khoebo. Python Gateway ke karolo ea MLToolkit mme e fana ka kopanyo le puo ea Python, e u lumellang ho hlophisa li-algorithms tsa ho ithuta tsa mochini tse entsoeng ho Python (tikoloho ea mantlha bakeng sa Bo-rasaense ba bangata ba Data), sebelisa lilaeborari tse ngata tse seng li itokisitse ho theha kapele AI / tlhahlobo ea robotic / Litharollo tsa ML sethaleng sa InterSystems IRIS.

litšupiso

MLToolkit

Sehlopha sa basebelisi ba MLToolkit ke polokelo ea poraefete ea GitHub e entsoeng e le karolo ea mokhatlo oa InterSystems oa GitHub. E etselitsoe basebelisi ba kantle ba kenyang, ba ithutang, kapa ba seng ba ntse ba sebelisa likarolo tsa MLToolkit, ho kenyeletsoa Python Gateway. Sehlopha se na le linyeoe tse 'maloa tse kentsoeng ts'ebetsong (tse nang le khoutu ea mohloli le lintlha tsa tlhahlobo) libakeng tsa ho rekisa, ho etsa thepa, ho tsa meriana le liindasteri tse ling tse ngata. Ho kenela ML Toolkit User Group, ka kopo romella lengolo-tsoibila le lekhutšoane atereseng e latelang: [imeile e sirelelitsoe] 'me u kenyelletse lintlha tse latelang lengolong la hau:

  • Lebitso la mosebelisi la GitHub
  • Mokhatlo (o sebetsa kapa oa ithuta)
  • Boemo (boemo ba hau ba 'nete mokhatlong oa hau, ebang ke "Seithuti" kapa "Ikemetseng").
  • naha

Bakeng sa ba balileng sengoloa mme ba khahloa ke bokhoni ba InterSystems IRIS joalo ka sethala sa ho nts'etsapele kapa ho amohela lienjineri tsa bohlale ba maiketsetso le lienjineri tsa ho ithuta ka mochini, re u mema hore u buisane ka maemo a ka bang teng a ka khahlang khoebo ea hau. Re tla thabela ho sekaseka litlhoko tsa k'hamphani ea hau le ho etsa qeto ka kopanelo moralo oa ts'ebetso; Ikopanye le lengolo-tsoibila la sehlopha sa rona sa litsebi tsa AI/ML - [imeile e sirelelitsoe].

Source: www.habr.com

Eketsa ka tlhaloso