Python Gateway ho InterSystems IRIS

Sengoliloeng sena se mabapi le Python Gateway, morero oa sechaba 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 ngotsoeng ho Python (tikoloho ea mantlha bakeng sa Bo-rasaense ba bangata ba Data), sebelisa lilaebrari tse ngata tse itokiselitseng ho theha kapele litharollo tsa tlhahlobo ea AI / ML sethaleng sa InterSystems IRIS. Sehloohong sena, ke tla bonts'a hore na InterSystems IRIS e ka hlophisa lits'ebetso tsa Python joang, ea etsa phetisetso ea data ea mekhoa e 'meli hantle, 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, ea sepheo se akaretsang, e shebaneng le 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 sebelisa mekhoa ea ho ithuta mochine.

Ho ithuta ka mochine (ML) ke sehlopha sa mekhoa ea bohlale ba maiketsetso e khetholloang ka ho se rarolle bothata ka ho toba, 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 ho ngola mela e makholo a likete tsa khoutu ho tsamaisa mohlala o le mong, 'me litšenyehelo tsa ho theha le ho tsamaisa mehlala li ntse li fokotseha.

Lisebelisoa li ntse li fetoha - ha re se na lisebelisoa tsa AI / ML tse thehiloeng ho GUI ka botlalo, 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 tse ka lokisoang tse thehiloeng ho GUI) e boetse e etsahala ho lisebelisoa tsa AI / ML. Re tlohile ka nqane ho mokhahlelo oa khoutu mme joale re sebelisa meralo ho aha le ho koetlisa mehlala.

Lintlafatso tse ling, tse kang bokhoni ba ho aba mohlala o koetlisitsoeng pele, moo mosebelisi oa ho qetela a tlamehang ho qeta ho koetlisa mohlala ho data ea bona e khethehileng, hape o etsa hore ho be bonolo ho qala ka ho ithuta mochine. 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 'me ea sebelisoa e le kenyelletso bakeng sa mehlala ea ho ithuta mochini.

Ka phetoho ea maru, ho qala merero ea AI/ML ho bonolo ho feta 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.

Empa ho thoe’ng ka liphello? Mona ke moo lintho li bang thata. Ho na le lisebelisoa tse ngata tsa ho haha ​​mehlala, tseo ke tla li tšohla ka tlase. Ho haha mohlala o motle ha ho bonolo, empa ho etsahala'ng ka mor'a moo? Ho etsa nyeoe ea tšebeliso ea khoebo bakeng sa mohlala le hona ha se ntho e nyane. 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. Moetso o motle ka ho fetisisa oa ho lemoha bomenemene o na le molemo ofe haeba re o tsamaisa hang ka letsatsi? Ke khale baqhekelli ba tsamaea 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 feela: ho hokahanya 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, e leng 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 seng kae 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. Matla a sehlooho a puo ke laeborari ea eona e kholo ea lipalo, ML, le lilaebrari tsa 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. Ntho e 'ngoe le e' ngoe hape 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 tsebahalang haholo 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 Gradient Boosting.
  • Gensim - NLP.
  • Keras - marang-rang a neural.
  • ho phalla ha tensor - sethala sa ho theha mehlala ea ho ithuta ka mochini.
  • PyTorch - 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 likhoebo li sebetse hantle le ho ikamahanya le maemo. Ho feta moo, theknoloji ena e ntse 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 setšoantšo sa 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 hlahlobiloeng tse tsitsitseng, fumana ea morao-rao feela. Hona joale ke 0.8, empa ho tla ba le tse ling ha nako e ntse e ea. Se ke oa kopanya / khoasolla polokelo, fumana tokollo ea morao-rao.

OS

Haeba u kenya Python Gateway tsamaisong ea ts'ebetso, u tla tlameha ho qala ho kenya Python (ho sa tsotellehe mokhoa oa ho sebetsa). Ho etsa 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. Kenya 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, etsa: 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 fumaneha tseleng e khutlang 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 sistimi e fetoha PATH e na le phetoho PYTHONHOME (kapa bukana eo e e supang).

Linux (Debian/Ubuntu)

  1. Hlahloba hore na tikoloho e fetoha 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 har'a lijana 2019.4.

Setšoantšo se phethiloeng

Etsa: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestho khoasolla le ho tsamaisa Python Gateway ka InterSystems IRIS Community Edition. Ho felile ke lehlohonolo.

Iketsetse setšoantšo sa 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 u ka fetola sena ka ho seta ho feto-fetoha 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 ".

Ka mor'a 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 letoto la litšoantšo bukeng ea nakoana. U ka 'na ua batla ho fetola tsela ena ho directory e behiloeng. Ho etsa sena, fetola tlhophiso 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 hlahloba ho kenya

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

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

Phello e lokela ho ba HELLO - boleng ba phetoho ea Python x. Haeba boemo ba ho khutla ke 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 - ke mokhoa o ka sehloohong. E hloka likhang tse 4 tsa boikhethelo:

  • code - mola oa khoutu o lokelang ho etsoa. Litlhaku tsa phepelo ea mohala: $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 phethile:

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

Mohlaleng ona re abela mofuta oa Python x moelelo Hello mme re batla ho khutlisa boleng ba phapang ea Python x ka sebopeho sa 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 - khoele kapa molatsoana oa khoutu ea Python ho e etsa.
  • variable - (ho ikhethela) e fana ka sephetho sa ho bolaoa code mofuta ona oa Python.

Mehlala ea tšebeliso:

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

Mohlaleng ona, re atisa 2 ka 3 mme re boloka sephetho ka mokhoa o fapaneng oa 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 khutlisa mefuta e fapaneng ho tsoa ho Python joalo ka likhoele kapa melapo.

  • GetVariable(variable, serialization, .stream, useString) - fumana serialization feto-fetoha variable в stream. Haeba useString e lekana le 1 mme serialization e kenella 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 kenya 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 arohaneng la likoma la thepa ea sehlopha ho kenya dataset. Li-mask lia tšehetsoa * и ?. Ka tloaelo - * (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 - ke bokahohle (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 mefokolo e mengata. 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. Pakete 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. Ena ke mokhoa o liehang ka ho fetesisa oa 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 fetisetsa 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 boleng ba lefats'e. Mask e ka ba khuts'oane ho feta palo ea masimo a lefats'e (tabeng ena, masimo a qetellong a tla tlotsoa). Mokhoa oa ho fomata mask:
    • + fetisa boleng kamoo bo leng kateng.
    • - tlola boleng.
    • b - Mofuta o utloahalang (0 - False, tse ling tsohle ke - True).
    • d — Letsatsi (ho tloha ho $horolog, ho Windows ho tloha ka 1970, ho ea pele Linux ho tloha ka 1900).
    • t - Nako ($ horolog, metsotsoana ka mor'a khitla).
    • m - Setempe sa nako (khoele e ka sebopeho sa YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
  • labels — %Lenane la mabitso a kholomo. Ntho ea pele ke lebitso la subscript.
  • namespace - sebaka seo kopo e tla phethoa ho sona.

ExecuteClass

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

ExecuteClass(class, variable, type, start, end, properties, namespace) - ho fetisetsa data ea 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 - ho qala Id.
  • end - Id ea ho qetela
  • properties - lenane le arohaneng la likoma la thepa ea sehlopha ho kenya dataset. Li-mask lia tšehetsoa * и ?. Ka tloaelo - * (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

Koahela 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 fetisoa joalo ka ha li le joalo. 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 tsamaisana le mefuta mktime mme e ipapisitse le OS (lifensetere: 1970-01-01, file linux 1900-01-01, Mac). Sebelisa %TimeStampho fetisa data ka ntle ho sebaka sena kapa ho sebelisa pandas dataframe kaha lena ke moeli feela.
  • etsoe ExecuteGlobal, ExecuteClass и ExecuteTable Likhohlano tsohle ntle le mohloli oa data (lefatšeng, sehlopha kapa tafole) le phetoho ke ea 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 e thusang

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - fumana leseli mabapi le phapano: 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 morao-rao 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

Kaha joale u se u ithutile ho letsetsa Python Gateway ho tloha setsing sa ho qetela, ha re qaleng ho e sebelisa tlhahiso. Metheo ea ho sebelisana le Python ka mokhoa ona ke: isc.py.ens.Operation. E re lumella ho:

  • Sebelisa khoutu ea Python
  • Boloka / Khutlisa moelelo oa Python
  • Laola le ho fumana lintlha ho tsoa ho Python

Ha e le hantle, ts'ebetso ea Python ke sekoaelo se pota-potileng isc.py.Main. Tshebetso isc.py.ens.Operation e thusa 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 batloang. Analoge isc.py.msg.ExecutionRequest, empa e amohela le ho khutlisa melapo ho e-na le likhoele.
  • isc.py.msg.QueryRequest ho fetisa sephetho sa ho etsa potso ea SQL. E khutla Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest 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 sesupo sa moelelo.
  • isc.py.msg.RestoreRequest ho khutlisa moelelo oa Python.

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

    • Initializer - khetho ea sehlopha se sebelisang sebopeho isc.py.init.Abstract. E ka sebelisoa ho kenya mesebetsi, li-module, lihlopha, joalo-joalo. E etsoa hang ha ts'ebetso e qala.
    • PythonLib — (bakeng sa feela Linux) haeba o bona diphoso ha o ntse o kenya, beha boleng ba yona 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 etsang hore ho be bonolo ho nts'etsapele lits'ebetso tsa khoebo:

  • isc.py.ens.ProcessUtils E u lumella ho ntša litlhaloso ho tsoa mesebetsing e nang le mefuta e meng e fapaneng.
  • isc.py.util.BPEmulator e o lumella ho lekola lits'ebetso tsa khoebo habonolo 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 ya ketsahalo ka lebitso la yona. 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 ke hore ts'ebetso ea hajoale 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

Tlhahiso ea liteko le ts'ebetso 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 sehlahisoa isc.py.test.Production.
  4. Romela kopo joalo ka 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 sebelisoa isc.py.msg.ExecutionRequest, lintlha tsa eona ke tsena:

  • Code - Khoutu ea Python.
  • SeparateLines - hore na ho arola khoutu ka mela bakeng sa ho phethahatsoa. $c(10) (n) e sebedisoang ho arola mela. Ka kopo hlokomela hore HA HO khothaletsoe ho sebetsana le molaetsa oohle hang-hang, ts'ebetso ena e etselitsoe ho sebetsa feela def le lipolelo tse tšoanang tsa mela e mengata. Ka kamehla 0.
  • Variables — lenane le arohaneng la dikoma la diphetoho tse tla ekeletswa karabong.
  • Serialization - Mokhoa oa ho hlophisa mefuta-futa eo re batlang ho e khutlisa. Likhetho: Str, Repr, JSON, Pickle и Dill, ka ho sa feleng 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"), e khutlisetsang tlhaloso ka nako ea ho sebetsa ka mor'a ho etsa 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 mefuta-futa

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 potso:

  • 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

Ka mor'a moo, re tla bua ka ho fetisetsa data ho tloha ho InterSystems IRIS ho ea Python, likopo tsohle tsa phetisetso ea data li sebelisa sebopeho. isc.py.msg.DataRequest, e 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. Pakete isc.py e tlameha 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 lipotso li kengoa tšebetsong:

  • isc.py.msg.QueryRequest - seta thepa Query ho fetisa potso ea SQL.
  • isc.py.msg.ClassRequest - seta thepa Class ho fetisetsa data ea 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

Boloka / Khutlisa Boemo ba Python

Qetellong, re ka boloka moelelo oa Python ho InterSystems IRIS, ho etsa sena, rea 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 phetoho e lokelang ho bolokoa. 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 (boikhethelo).

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

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

  • ContextId - sekhetho sa moelelo.
  • Clear - moelelo o hlakileng pele o khutlisa.

Buka ea Jupyter

Buka ea Jupyter - ke sesebelisoa sa marang-rang se bulehileng se u lumellang ho theha le ho phatlalatsa libuka tsa ho ngolla tse nang le khoutu, lipono le mongolo. Python Gateway e u lumella ho sheba le ho hlophisa lits'ebetso tsa BPL joalo ka Jupyter Notebook. Hlokomela hore moetsi oa hona joale ke Python 3.

Katoloso ena e nka hore litlatsetso li na le khoutu ea Python mme li sebelisa mabitso a mesebetsi joalo ka lihlohopele. Hona joale hoa khoneha ho hlahisa PythonGateway workflows 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 ling:

Mokhoa oa ho hlahloba

Python Gateway ho InterSystems IRIS

Mohlophisi oa Ts'ebetso

Python Gateway ho InterSystems IRIS

bophirima

  1. U tla hloka InterSystems IRIS 2019.2+.
  2. Kenya PythonGateway v0.8+ (e hloka 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 sete ea lisebelisoa tse ikemiselitseng 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 Python (tikoloho e ka sehloohong bakeng sa Bo-rasaense ba bangata ba Data), sebelisa lilaebrari tse ngata tse itokiselitseng ho theha ka potlako tharollo ea AI/ML ea AI/ML sethaleng sa InterSystems IRIS.

litšupiso

MLToolkit

MLToolkit User Group ke polokelo ea poraefete ea GitHub e entsoeng e le karolo ea mokhatlo oa InterSystems oa GitHub. E lebisitsoe ho basebelisi ba kantle ba kenyang, ba ithutang, kapa ba seng ba ntse ba sebelisa likarolo tsa MLToolkit, ho kenyeletsoa Python Gateway. Sehlopha se fana ka linyeoe tse ngata tse sebelisoang (tse nang le khoutu ea mohloli le lintlha tsa tlhahlobo) libakeng tsa ho rekisa, ho etsa thepa, meriana le liindasteri tse ling tse ngata. Ho ba setho sa ML Toolkit User Group, ka kopo romella lengolo-tsoibila le lekhutšoane ho: MLToolkit@intersystems.com 'me u kenyelletse lintlha tse latelang lengolong la hau:

  • GitHub Username
  • Mokhatlo (o sebetsa kapa oa ithuta)
  • Boemo (boemo ba hau ba 'nete mokhatlong oa hau, kapa "Moithuti" kapa "Ikemetseng").
  • naha

Bakeng sa ba balileng sengoloa mme ba khahloa ke bokhoni ba InterSystems IRIS e le sethala sa ho nts'etsapele kapa ho amohela bohlale ba maiketsetso le mekhoa ea ho ithuta ka mochini, re u mema hore u buisane ka maemo a ka khahlang khoebo ea hau. Re thabela ho sekaseka litlhoko tsa khoebo ea hau le ho hlalosa ka kopanelo moralo oa ts'ebetso; aterese ea lengolo-tsoibila la sehlopha sa rona sa litsebi tsa AI/ML ke MLToolkit@intersystems.com.

Source: www.habr.com

Reka sebaka se tšepahalang sa libaka tse nang le ts'ireletso ea DDoS, li-server tsa VPS VDS 🔥 Reka sebaka se tšepahalang sa ho amohela webosaete ka tšireletso ea DDoS, li-server tsa VPS VDS | ProHoster