Python Gateway li InterSystems IRIS

Ev gotar li ser Python Gateway, projeyek civaka çavkaniya vekirî ya ji bo platforma daneya InterSystems IRIS e. Ev proje dihêle hûn her algorîtmayên fêrbûna makîneyê yên ku li Python-ê hatine afirandin (hawirdora sereke ji bo gelek Zanyarên Daneyê) organîze bikin, gelek pirtûkxaneyên amade bikar bînin da ku bi lez çareseriyên AI / ML-ya analîtîk ên adaptîv, robotîkî li ser platforma InterSystems IRIS biafirînin. Di vê gotarê de, ez ê nîşanî we bidim ka InterSystems IRIS çawa dikare pêvajoyên Python birêxistin bike, veguheztina daneya du-alî ya bi bandor pêk bîne, û pêvajoyên karsaziya aqilmend biafirîne.

Plan

  1. Pîrozbahiyê
  2. Amûrên.
  3. Lêkirinî.
  4. API
  5. Hevkarîbûn.
  6. Jupyter Notebook.
  7. Encamên
  8. Girêdanên.
  9. M.L.Toolkit.

Pîrozbahiyê

Python zimanek bernamesaziya astek bilind,-armanca gelemperî ye ku li ser baştirkirina hilberîna pêşdebir û xwendina kodê ye. Di vê rêze gotaran de, ez ê li ser îmkanên karanîna zimanê Python li ser platforma InterSystems IRIS biaxivim, dema ku mebesta sereke ya vê gotarê karanîna Python wekî zimanek ji bo çêkirin û sepandina modelên fêrbûna makîneyê ye.

Fêrbûna makîneyê (ML) çînek rêbazên îstîxbarata sûnî ye, ku taybetmendiya wê ne çareseriya rasterast a pirsgirêkê ye, lê fêrbûna di pêvajoya çareserkirina gelek pirsgirêkên wekhev de ye.

Algorîtma û modelên fêrbûna makîneyê her ku diçe berbelavtir dibin. Gelek sedemên vê yekê hene, lê ew hemî bi gihîştin, sadebûn û gihîştina encamên pratîk ve tê. Ma kombûn an tewra modelkirina tora neuralî teknolojiyek nû ye?

Helbet na, lê îro ji bo xebitandina yek modelê ne hewce ye ku bi sed hezaran rêzikên kodê binivîsin û lêçûnên çêkirin û karanîna modelan her ku diçe piçûktir û piçûktir dibe.

Amûr pêşve diçin - her çend ku em ne xwediyê amûrên AI/ML yên bi tevahî GUI ne, pêşkeftina ku me bi gelek çînên din ên pergalên agahdariyê yên mîna BI-yê (ji nivîsandina kodê heya karanîna çarçove û çareseriyên mîhengkirî yên oriented GUI) dîtiye, di heman demê de tê dîtin. di amûrên çêkirina AI / ML de. Me berê qonaxa nivîsandina kodê derbas kiriye û îro em çarçoweyan ji bo çêkirin û perwerdekirina modelan bikar tînin.

Pêşveçûnên din, wek şiyana belavkirina modelek pêş-perwerdekirî ku bikarhênerê dawî divê bi tenê perwerdehiya modelê li ser daneyên xweyên taybetî biqedîne, di heman demê de destpêkirina sepandina fêrbûna makîneyê jî hêsantir dike. Van pêşkeftinan fêrbûna fêrbûna makîneyê, hem ji bo pisporan û hem jî ji bo pargîdaniyan bi tevahî hêsantir dike.

Li aliyê din, em bêtir û bêtir daneyan berhev dikin. Bi platformek daneya yekbûyî ya wekî InterSystems IRIS, hemî ev agahdarî dikarin tavilê werin amadekirin û wekî têketinê ji bo modelên fêrbûna makîneyê werin bikar anîn.

Bi derbasbûna ewr re, destpêkirina projeyên AI/ML ji berê hêsantir e. Em tenê dikarin çavkaniyên ku em hewce ne bixwin. Digel vê yekê, bi saya paralelîzasyona ku ji hêla platformên ewr ve hatî pêşkêş kirin, em dikarin dema wendakirinê xilas bikin.

Lê li ser encamên? Li vir tişt tevlihevtir dibin. Ji bo çêkirina modelan gelek amûr hene, ku ez ê paşê li ser wan nîqaş bikim. Avakirina modelek baş ne hêsan e, lê paşê çi? Qezenckirina ji karanîna modelê ji hêla karsaziyek ve jî karek ne hindik e. Koka pirsgirêkê veqetandina barkêşên kar analîtîk û danûstendinê û modelên daneyê ye. Dema ku em modelek perwerde dikin, em bi gelemperî li ser daneyên dîrokî dikin. Lê cîhê modela hatî çêkirin di pêvajoya daneya danûstendinê de ye. Ger em rojê carekê wê bimeşînin modela vedîtina danûstendina sextekar a çêtirîn çi ye? Scammers demeke dirêj bi pereyan hiştine. Pêdivî ye ku em modelê li ser daneyên dîrokî perwerde bikin, lê di heman demê de pêdivî ye ku em wê di demek rast de li ser daneyên nû yên hatinî jî bicîh bikin da ku pêvajoyên karsaziya me li gorî pêşbîniyên ku ji hêla modelê ve hatine çêkirin tevbigerin.

ML Toolkit amûrek e ku tenê wiya dike: modelan li hev tîne û hawîrdorek danûstendinê da ku modelên ku hûn ava dikin bi hêsanî rasterast di pêvajoyên karsaziya we de werin bikar anîn. Python Gateway beşek ji Amûra ML-ê ye û bi zimanê Python re entegrasyonê peyda dike (wekî R Gateway, ku beşek ji Amûrên ML-ê ye bi zimanê R re entegrasyonê peyda dike).

Amûr

Berî ku em berdewam bikin, ez dixwazim çend amûr û pirtûkxaneyên Python-ê yên ku em ê paşê bikar bînin vebêjim.

ji teknolojiya

  • Python zimanek bernamesaziyê ya şirovekirî, mebesta gelemperî, asta bilind e. Avantaja sereke ya zimên pirtûkxaneyek mezin a pirtûkxaneyên matematîkî, ML û AI-yê ye. Mîna ObjectScript, ew zimanek objekt-oriented e, lê her tişt bi dînamîk tê pênase kirin, ne statîk. Her weha her tişt objeyek e. Gotarên paşerojê bi ziman re nasnameyek derbas dibe. Heke hûn dixwazin dest bi fêrbûnê bikin, ez pêşniyar dikim ku bi dest pê bikin belgekirin.
  • Ji bo temrînên me yên din, saz bikin Python 3.6.7 64bit.
  • IDE: Ez bikar tînim PyCharm, lê bi gelemperî много. Heke hûn Atelier bikar tînin, ji bo pêşdebirên Python pêvekek Eclipse heye. Heke hûn VS Code bikar tînin, wê hingê ji bo Python dirêjkirinek heye.
  • Notebook: Li şûna IDE, hûn dikarin nivîsarên xwe di notebookên serhêl de binivîsin û parve bikin. Ya herî populer ji wan e jupyter.

Pirtûkxane

Li vir navnîşek (beş) pirtûkxaneyên fêrbûna makîneyê heye:

  • Pizrikî - pakêtek bingehîn ji bo hesabên rast.
  • pandas - Strukturên daneya performansa bilind û amûrên analîzkirina daneyê.
  • matplotlib - Afirandina nexşeyan.
  • deryayê - dîtbarîkirina daneyan li ser bingeha matplotlib.
  • Sklearn - rêbazên fêrbûna makîneyê.
  • XGBoost - Algorîtmayên fêrbûna makîneyê di nav metodolojiya Boosting Gradient de.
  • Gensim - NLP.
  • Keras - torên neuralî.
  • herikîna tensor platformek ji bo afirandina modelên fêrbûna makîneyê ye.
  • PyTorch platformek ji bo afirandina modelên fêrbûna makîneyê ye ku li ser Python-ê hûr dibin.
  • Nyoka - PMML ji modelên cihêreng.

Teknolojiyên AI / ML karsaziyê bikêrtir û guncantir dike. Wekî din, îro van teknolojiyên pêşdebirin û bicîh kirin hêsantir dibin. Li ser teknolojiyên AI/ML fêr bibin û ka ew çawa dikarin alîkariya rêxistina we bikin ku mezin bibe.

mîhengê

Gelek awayên sazkirin û karanîna Python Gateway hene:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Wêne ji DockerHub bikar bînin
    • Awira xwe biafirînin

Bêyî rêbaza sazkirinê, hûn ê koda çavkaniyê hewce bikin. Tenê cîhê dakêşana kodê ye rûpela weşanên. Ew serbestberdanên stabîl ên ceribandinî vedihewîne, tenê ya herî paşîn bigirin. Heya niha ew 0.8 e, lê bi demê re dê yên nû hebin. Depoyê klon nekin/dakêşînin, serbestberdana herî dawî dakêşin.

OS

Ger hûn Python Gateway li ser pergalek xebitandinê saz dikin, wê hingê pêşî (bêyî pergala xebitandinê) hûn ê hewce bikin ku Python saz bikin. Ji bo vê:

  1. Python 3.6.7 64 bit saz bikin. Tê pêşniyar kirin ku Python di pelrêça xwerû de saz bikin.
  2. Modulê saz bikin dill: pip install dill.
  3. Koda ObjectScript dakêşin (ango. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ji her deverê bi hilberan re. Ger hûn dixwazin herêmek heyî ku hilberan piştgirî bike, bimeşînin: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Cîh banga DLL/SO/DYLIB ji bo peldankê bin mînaka weya InterSystems IRIS. Pêdivî ye ku pelê pirtûkxaneyê di riya ku ji hêla vegerî ve hatî vegerandin de hebe write ##class(isc.py.Callout).GetLib().

Windows

  1. Piştrast bike ku guherbara jîngehê ye PYTHONHOME xalên Python 3.6.7.
  2. Piştrast bike ku guherbara jîngehê pergalê ye PATH guherbarekê dihewîne PYTHONHOME (an pelrêça ku ew nîşan dide).

Linux (Debian/Ubuntu)

  1. Kontrol bikin ka guhêrbara jîngehê ye PATH tîne /usr/lib и /usr/lib/x86_64-linux-gnu. Pelê bikar bînin /etc/environment ji bo danîna guherbarên jîngehê.
  2. Di doza çewtiyên undefined symbol: _Py_TrueStruct mîhengê danîn PythonLib. jî di Readme e beşa Troubleshooting hene.

Mac

  1. Niha tenê ji python 3.6.7 piştgirî tê kirin python.org. Guherbar kontrol bikin PATH.

Ger we guhêrbarên hawîrdorê guhertiye, hilbera xwe ya InterSystems ji nû ve bidin destpêkirin.

Docker

Bikaranîna konteyneran çend avantajên xwe hene:

  • Portability
  • Bandor
  • Insulasyon
  • sivikî
  • Immutability

Vê kontrol bikin rêze gotaran ji bo bêtir agahdarî li ser karanîna Docker bi hilberên InterSystems re.

Hemî avahiyên Python Gateway niha li ser konteynerê ne. 2019.4.

Wêneyê qedandî

Rev: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestji bo dakêşin û xebitandina Python Gateway bi InterSystems IRIS Community Edition. Navê pêger.

Awira xwe biafirînin

Ji bo avakirina wêneyek docker, di root depoyê de bimeşînin: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Bi xwerû, wêne li ser bingeha wêneyê hatî çêkirin store/intersystems/iris-community:2019.4.0.383.0, lê belê hûn dikarin vê bi danîna guhêrbar biguherînin IMAGE.
Ji bo avakirina ji InterSystems IRIS dimeşîne: `avakirina dokerê --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag navsystemscommunity/irispy: herî dawî'.

Piştî wê, hûn dikarin wêneya dockerê bimeşînin:

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

Heke hûn wêneyek li ser bingeha InterSystems IRIS Community Edition bikar tînin, hûn ne hewce ne ku mifteyek diyar bikin.

Comments

  • Pêvajoya Testê isc.py.test.Process hejmarek wêneyan li pelrêçek demkî tomar dike. Dibe ku hûn bixwazin vê rêyê bi pelrêçek siwarkirî biguherînin. Ji bo vê yekê, mîhengê biguherînin WorkingDir destnîşankirina pelrêça siwarkirî.
  • Ji bo gihîştina termînalê, bixebitin: docker exec -it irispy sh.
  • Gihîştina Portalê Rêvebiriya Pergalê bi têketinê SuperUser/SYS.
  • Ji bo rawestandina konteynerek, birevin: docker stop irispy && docker rm --force irispy.

Kontrolkirina sazkirinê

Gava ku we Python Gateway saz kir, hêja ye ku hûn kontrol bikin ku ew dixebite. Vê kodê di termînala InterSystems IRIS de bimeşînin:

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

Divê encam bibe HELLO - nirxa guhêrbar Python x. Ger rewşa vegerê sc xelet e an var vala, kontrol Readme - Beşa çareserkirina pirsgirêkan.

API

Python Gateway hatiye sazkirin û we piştrast kir ku ew dixebite. Wext e ku meriv dest bi karanîna wê bike!
Navbera sereke ya Python e isc.py.Main. Ew komên rêbazên jêrîn pêşkêşî dike (hemî vedigerin %Status):

  • îdamkirina kodê
  • Veguhertina danûstendinê
  • Şîrketa girêdayî

îdamkirina kodê

Van rêbazan dihêlin ku hûn koda Python-a keyfî bicîh bînin.

SimpleString

SimpleString rêbaza sereke ye. Ew 4 argumanên vebijarkî digire:

  • code rêzika kodê ye ku ji bo darvekirinê ye. Karaktera xwarina rêzê: $c(10).
  • returnVariable navê guherbara vegerê ye.
  • serialization - çawa serialize returnVariable. 0 - string (defall), 1 - repr.
  • result - ByRef referansa guherbara ku nirx tê de hatiye nivîsandin returnVariable.

Li jor me kiriye:

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

Di vê nimûneyê de, em ji guhêrbarek Python re destnîşan dikin x wateya Hello û dixwazin nirxa guhêrbarek Python vegerînin x ji guhêrbarek ObjectScript re var.

ExecuteCode

ExecuteCode alternatîfek ewledar û kêmtir sînordar e SimpleString.
Xêzên di platforma InterSystems IRIS de bi 3 karakteran têne sînorkirin, û heke hûn dixwazin perçeyek kodê dirêjtir bikin, hûn hewce ne ku çeman bikar bînin.
Ew du argûman digire:

  • code - xêzek an çemek koda Python ku were darve kirin.
  • variable - (vebijarkî) encama darvekirinê destnîşan dike code ev guhêrbar Python.

Pêşniyar bikin ku bikar bînin:

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

Di vê nimûneyê de, em 2 bi 3 zêde dikin û encamê di guherbarek Python de hilînin y.

Veguhertina danûstendinê

Daneyên ji Python û ji Python re derbas bikin.

Python -> InterSystems IRIS

Li InterSystems IRIS 4 away hene ku hûn nirxa guhêrbarek Python bistînin, li gorî serialîzasyona ku hûn hewce ne:

  • String ji bo celebên daneyên hêsan û xeletkirinê.
  • Repr ji bo hilanîna tiştên hêsan û debugging.
  • JSON ji bo manîpulasyona hêsan a daneyê li ser milê InterSystems IRIS.
  • Pickle ji bo rizgarkirina tiştan.

Van rêbazan dihêle hûn guhêrbaran ji Python-ê wekî rêzek an wekî çeman bistînin.

  • GetVariable(variable, serialization, .stream, useString) - bigirin serialization têgûherr variable в stream. Ger useString e 1 û serialization di xêzekê de tê danîn, paşê a string vedigere, ne stream.
  • GetVariableJson(variable, .stream, useString) - serialîzasyona JSON a guhêrbar bistînin.
  • GetVariablePickle(variable, .stream, useString, useDill) -Pickle (an Dill) serialîzasyona guhêrbarekê bistînin.

Ka em hewl bidin ku guhêrbara xwe bistînin y.

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

InterSystems IRIS -> Python

Daneyên ji InterSystems IRIS di Python de bar dike.

  • ExecuteQuery(query, variable, type, namespace) - databasek (pandas dataframe an list) ji lêpirsîna sql û wê li guhêrbara python saz bikin variable. Çenteyê plastîk isc.py divê li herêmê hebin namespace - Daxwaz dê li wir pêk were.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - Daneyên gerdûnî bar dike global ji abonetiyê start ber end di Python de wekî guherbarek celeb type: list, an jî panda dataframe. Danasîna argumanên vebijarkî mask û labels di belge û depoya polê de heye Belgeyên Veguheztina Daneyê.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - Daneyên polê bar dike class ji id start ber end di Python de wekî guherbarek celeb type: list, an jî panda dataframe. properties - navnîşa (ji hêla komê veqetandî) taybetmendiyên polê yên ku di nav databasê de bêne barkirin. Masks piştgirî kirin * и ?. Pêşbirk - * (hemû taybetmendiyên). Mal %%CLASSNAME paşguh kirin.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - Daneyên tabloyê bar dike table ji id start ber end li python.

ExecuteQuery - gerdûnî (her pirsek derbasdar a SQL dê ji Python re were derbas kirin). Lebê, ExecuteGlobal û pêlên wî ExecuteClass и ExecuteTable bi çend sînoran re kar bikin. Ew pir zûtir in (3-5 carî ji ajokera ODBC û 20 carî zûtir ji ExecuteQuery). Agahiyên bêtir li Belgeyên Veguheztina Daneyê.
Hemî van rêbazan veguheztina daneyan ji her deverê piştgirî dikin. Çenteyê plastîk isc.py divê li qada hedef hebe.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - derbaskirina encamên her pirsek SQL ya derbasdar ji Python re. Ev rêbaza veguhastina daneyê ya herî hêdî ye. Heke bikar bînin ExecuteGlobal û pêçanên wê peyda nabin.

Argument:

  • query - pirsa sql.
  • variable - navê guhêrbara Python ku dane tê nivîsandin.
  • type - list an jî panda dataframe.
  • namespace - qada ku dê daxwaz lê were bicihanîn.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - derbaskirina gerdûnek ji Python re.

Argument:

  • global navê gerdûna bê ye ^
  • variable - navê guhêrbara Python ku dane tê nivîsandin.
  • type - list an jî panda dataframe.
  • start - yekem abonetiya gerdûnî. Pêdivî ye %Integer.
  • end abonetiya dawî ya gerdûnî ye. Pêdivî ye %Integer.
  • mask - maskeya nirxên gerdûnî. Mask dikare ji hejmara zeviyên gerdûnî kurttir be (di vê rewşê de dê zeviyên li dawiyê werin paşguh kirin). Meriv çawa maskê format dike:
    • + nirxê wekî xwe derbas bikin.
    • - nirx derbas bike.
    • b - Tîpa Boolean (0 - False, hemû yên mayî - True).
    • d - Dîrok (ji $ horolog, li ser Windows ji 1970, li Linux ji 1900).
    • t - Dem ($horolog, çirkeyên piştî nîvê şevê).
    • m - Demjimêr (SAL-MEH-ROJ SAET: DEQE: DUYEMÎN rêzika formatê).
  • labels - %Lîsteya navên stûnan. Hêmana yekem navê binnivîsê ye.
  • namespace - qada ku dê daxwaz lê were bicihanîn.

ExecuteClass

pêça ExecuteGlobal. Li ser bingeha pênaseya polê bangek amade dike ExecuteGlobal û gazî wî dike.

ExecuteClass(class, variable, type, start, end, properties, namespace) - Daneyên dersê ji Python re derbas dikin.

Argument:

  • class - navê polê
  • variable - navê guhêrbara Python ku dane tê nivîsandin.
  • type - list an jî panda dataframe.
  • start - Destpêkirina Id.
  • end - Nasnameya dawî
  • properties - navnîşa (ji hêla komê veqetandî) taybetmendiyên polê yên ku di nav databasê de bêne barkirin. Masks piştgirî kirin * и ?. Pêşbirk - * (hemû taybetmendiyên). Mal %%CLASSNAME paşguh kirin.
  • namespace - qada ku dê daxwaz lê were bicihanîn.

Hemî taybetmendî wekî xwe têne derbas kirin ji bilî taybetmendiyên celeb %Date, %Time, %Boolean и %TimeStamp - ew li çînên Python-ê yên têkildar têne veguheztin.

ExecuteTable

pêça ExecuteClass. Navê sifrê werdigerîne navek polê û bang dike ExecuteClass. Destnîşan:

ExecuteTable(table, variable, type, start, end, properties, namespace) - Daneyên tabloyê ji Python re derbas dikin.

Argument:

  • table - navê maseyê.
    Hemî argumanên din wekî ku têne derbas kirin. ExecuteClass.

Nîşe

  • ExecuteGlobal, ExecuteClass и ExecuteTable bi heman lez dixebitin.
  • ExecuteGlobal 20 caran zûtir ji ExecuteQuery li ser danûstendinên mezin (dema veguheztinê > 0.01 çirke).
  • ExecuteGlobal, ExecuteClass и ExecuteTable li ser gerdûnên bi vê strukturê bixebitin: ^global(key) = $lb(prop1, prop2, ..., propN) ko key yekjimar e.
  • bo ExecuteGlobal, ExecuteClass и ExecuteTable range nirxê piştgirî %Date bi rêzê re têkildar e mktime û bi OS-ê ve girêdayî yewindows: 1970-01-01, linux 1900-01-01, mac). Bikaranîn %TimeStampda ku daneyan li derveyî vê rêzê derbas bikin an jî dataframe pandayan wekî bikar bînin ev sînor tenê ji bo navnîşê ye.
  • bo ExecuteGlobal, ExecuteClass и ExecuteTable hemî arguman ji bilî çavkaniya daneyê (gerdûnî, çîn an tablo) û guhêrbar vebijarkî ne.

wergerandî

çîna testê isc.py.test.Person rêbazek heye ku hemî vebijarkên veguheztina daneyê destnîşan dike:

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)

rêbaza banga do ##class(isc.py.test.Person).Test() ji bo ku hûn bibînin ka hemî awayên veguheztina daneyê çawa dixebitin.

Rêbazên Alîkar

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - di derbarê guhêrbar de agahdarî bistînin: ka ew diyarkirî ye, çîn û dirêjahiya serialkirinê.
  • GetVariableDefined(variable, .defined) - gelo guhêrbar hatiye diyarkirin.
  • GetVariableType(variable, .type) - çîna guherbarê bistînin.
  • GetStatus() - îstîsna paşîn a li aliyê Python-ê bistînin û rakin.
  • GetModuleInfo(module, .imported, .alias) - guherbara modulê bistînin û statûya îtxal bikin.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - agahdariya li ser fonksiyonê bistînin.

Hevkarîbûn

Hûn fêr bûne ka meriv çawa ji termînalê gazî Python Gateway dike, naha em dest bi karanîna wê di hilberînê de bikin. Bingeha têkiliya bi Python re di vê modê de ye isc.py.ens.Operation. Ew destûrê dide me:

  • Koda Python bicîh bikin
  • Têkoşîna Python hilînin / vegerînin
  • Daneyên ji Python barkirin û bistînin

Di bingeh de, operasyonek Pyhton dorpêk e isc.py.Main. Emelî isc.py.ens.Operation destûrê dide danûstendinê bi pêvajoya Python re ji hilberên InterSystems IRIS. Pênc daxwaz têne piştgirî kirin:

  • isc.py.msg.ExecutionRequest ji bo pêkanîna koda Python. vedigere isc.py.msg.ExecutionResponse bi encama darvekirinê û nirxên guhêrbarên daxwazkirî re.
  • isc.py.msg.StreamExecutionRequest ji bo pêkanîna koda Python. vedigere isc.py.msg.StreamExecutionResponse encama darvekirinê û nirxên guhêrbarên daxwazkirî. analog isc.py.msg.ExecutionRequest, lê di şûna rêzan de herikan qebûl dike û vedigerîne.
  • isc.py.msg.QueryRequest ji bo veguheztina encama pêkanîna pirsek SQL. vedigere Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest ku daneyên gerdûnî / çîn / sifrê derbas bikin. vedigere Ens.Response.
  • isc.py.msg.SaveRequest ji bo naveroka Python xilas bike. vedigere Ens.StringResponse bi nasnameya kontekstê.
  • isc.py.msg.RestoreRequest ji bo vegerandina çarçoveya Python.

    Herweha, isc.py.ens.Operation du mîheng hene:

    • Initializer - Hilbijartina pola ku pêvekê pêk tîne isc.py.init.Abstract. Ew dikare ji bo barkirina fonksiyon, modul, çîn û yên wekî wan were bikar anîn. Dema ku pêvajo dest pê dike ew yek carek tê darve kirin.
    • PythonLib - (Tenê Linux) heke hûn xeletiyên bootê bibînin, nirxa wê saz bikin libpython3.6m.so an jî di riya tevahî ya pirtûkxaneya Python de.

Afirandina pêvajoyên karsaziyê

Du çîn hene ku pêşveçûna pêvajoyên karsaziyê hêsan dikin:

  • isc.py.ens.ProcessUtils destûrê dide te ku hûn şîroveyan ji çalakiyên bi veguheztina guhêrbar derxînin.
  • isc.py.util.BPEmulator ceribandina pêvajoyên karsaziyê bi Python re hêsan dike. Ew dikare di pêvajoya heyî de pêvajoyek karsaziyê (parçeyên Python) bimeşîne.

Cîgira guherbar

Hemî pêvajoyên karsaziyê ji mîras in isc.py.ens.ProcessUtils, dikarin rêbazê bikar bînin GetAnnotation(name) ji bo ku nirxa annotationek bi navê xwe bistînin. Annotation çalakiyê dibe ku guhêrbarên ku dê ji hêla InterSystems IRIS ve bêne nirxandin berî ku ji Python re derbas bibin hene. Li vir hevoksaziya ji bo veguheztina guhêrbar heye:

  • ${class:method:arg1:...:argN} - banga rêbazê
  • #{expr} - kodê di zimanê ObjectScript de bicîh bikin.

Mînakek di pêvajoya karsaziya ceribandinê de heye isc.py.test.ProcessJi bo nimûne, di çalakiyê de Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Di vê nimûneyê de:

  • #{process.WorkDirectory} taybetmendiya WorkDirectory ya objeyê vedigerîne process, ku mînakek polê ye isc.py.test.Process ewan. pêvajoya karsaziya heyî.
  • ${%PopulateUtils:Integer:1:100} rêbazek bang dike Integer çîn %PopulateUtils, derbaskirina argumanan 1 и 100, di nav rêzê de jimareyek bêkêmasî vedigerîne 1...100.

Pêvajoya karsaziyê test bikin

Hilberîna ceribandinê û pêvajoya karsaziya ceribandinê ji hêla xwerû ve wekî beşek ji Python Gateway heye. Ji bo bikaranîna wan:

  1. Di xebitandina termînala OS-ê de: pip install pandas matplotlib seaborn.
  2. Di termînala IRIS ya InterSystems de, bixebitin: do ##class(isc.py.test.CannibalizationData).Import() da ku daneyên testê dagire.
  3. Berheman bidin destpêkirin isc.py.test.Production.
  4. Cureyê daxwaznameyê bişînin Ens.Request в isc.py.test.Process.

Ka em bibînin ka ew hemî bi hev re çawa dixebite. Vekirî isc.py.test.Process di edîtorê BPL de:

Python Gateway li InterSystems IRIS

îdamkirina kodê

Banga herî girîng pêkanîna koda Python e:

Python Gateway li InterSystems IRIS

Daxwaz tê bikaranîn isc.py.msg.ExecutionRequest, li vir taybetmendiyên wê hene:

  • Code - Koda Python.
  • SeparateLines - gelo ji bo darvekirinê kodê di nav rêzan de parçe bikin. $c(10) (n) ji bo veqetandina rêzan tê bikaranîn. Bala xwe bidinê ku NE tê pêşniyar kirin ku meriv bi yekcarê tevahiya peyamê bişopîne, ev fonksiyon tenê ji bo pêvajoyê ye def û bêjeyên pirreng ên mîna hev. Destçûnî 0.
  • Variables lîsteyek guhêrbarên veqetandî ye ku dê li bersivê were zêdekirin.
  • Serialization - Meriv çawa guhêrbarên ku em dixwazin vegerînin serialîze bikin. Vebijêrk: Str, Repr, JSON, Pickle и Dill, default Str.

Di doza me de, me tenê xanî destnîşan kir Code, da ku hemî taybetmendiyên din nirxên xweyên xwerû bikar bînin. Me bi telefonê saz kir process.GetAnnotation("Import pandas"), ku di dema xebitandinê de piştî ku guheztina guhêrbar tê kirin annotasyonek vedigerîne. Di dawiyê de kod import pandas as pd dê ji Python re derbas bibe. GetAnnotation dikare ji bo wergirtina nivîsarên Python-ê yên pir-xêz bikêr be, lê di vî awayê wergirtina kodê de ti sînorkirin tune. Hûn dikarin xanî saz bikin Code bi her awayî ji bo we rehet e.

Girtina Guherbaran

Pirsgirêkek din a balkêş bikar tîne isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway li InterSystems IRIS

Ew Matrixa Têkiliyê li aliyê Python hesab dike û guhêrbar derdixe corrmat bi danîna taybetmendiyên daxwaznameyê vegere InterSystems IRIS di formata JSON de:

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

Em dikarin encamên di Visual Trace de bibînin:

Python Gateway li InterSystems IRIS

Û heke em di BP-ê de vê nirxê hewce ne, ew dikare bi vî rengî were bidestxistin: callresponse.Variables.GetAt("corrmat").

Veguhertina danûstendinê

Dûv re, bila em li ser veguheztina daneyan ji InterSystems IRIS bo Python biaxivin, hemî daxwazên veguheztina daneyê pêvekê bicîh dikin isc.py.msg.DataRequest, ku taybetmendiyên jêrîn peyda dike:

  • Variable guhêrbarek Python e ku dane tê nivîsandin.
  • Type - type variable: dataframe (pandas dataframe) an list.
  • Namespace - herêma ku em jê daneyan distînin. Çenteyê plastîk isc.py divê di vî warî de hebin. Ev dibe ku herêmek bêyî piştgiriya hilberê be.

Li ser bingeha vê navberê, 4 çînên daxwazan têne bicîh kirin:

  • isc.py.msg.QueryRequest - milkê danîn Query ji bo şandina pirsek SQL.
  • isc.py.msg.ClassRequest - milkê danîn Class ku daneyên polê derbas bikin.
  • isc.py.msg.TableRequest - milkê danîn Table ku daneyên sifrê derbas bikin.
  • isc.py.msg.GlobalRequest - milkê danîn Global ji bo veguhestina daneyan li cîhanê.

Di pêvajoya testê de, li çalakiyê binêrin RAWko isc.py.msg.QueryRequest di çalakiyê de tê nîşandan.

Python Gateway li InterSystems IRIS

Tomarkirin / Vegerandina Pêvekek Python

Di dawiyê de, em dikarin çarçoveya Python-ê di InterSystems IRIS de hilînin, ji bo vê yekê bikin, bişînin isc.py.msg.SaveRequest bi argumanan:

  • Mask - Tenê guhêrbarên ku maskê têr dikin têne tomar kirin. Piştgirî kirin * и ?... Mînak: "Data*, Figure?"... Destçûnî *.
  • MaxLength - Dirêjahiya herî zêde ya guherbara hilanîn. Ger serialîzasyona guhêrbar dirêjtir be, wê hingê ew ê were paşguh kirin. Ji bo guhêrbarên her dirêjahî bistînin 0 destnîşan bikin. Destçûnî $$$MaxStringLength.
  • Name - Navê naverokê (vebijarkî).
  • Description - Danasîna çarçoveyê (vebijarkî).

Vedigere Ens.StringResponse с Id çarçoveya rizgar kirin. Di pêvajoya testê de, li çalakiyê binêrin Save Context.

Daxwaza têkildar isc.py.msg.RestoreRequest çarçoveyek ji InterSystems IRIS li Python bar dike:

  • ContextId nasnameya kontekstê ye.
  • Clear - Berî vesazkirinê çarçovê paqij bikin.

Jupyter Notebook

Jupyter Notebook serîlêdanek webê ya çavkaniyek vekirî ye ku destûrê dide te ku hûn notebookên ku tê de kod, dîmen û nivîs hene biafirînin û biweşînin. Python Gateway dihêle hûn pêvajoyên BPL-ê wekî Notebookek Jupyter bibînin û biguherînin. Têbînî ku îcrakarê birêkûpêk Python 3 niha tê bikar anîn.

Ev pêvek texmîn dike ku şirove koda Python-ê dihewîne û navên çalakiyê wekî sernavên pêşîn bikar tîne. Naha gengaz e ku meriv pêvajoyên karsaziya PythonGateway di Jupyter Notebook de pêşve bibe. Li vir çi gengaz e:

  • Pêvajoyên karsaziya nû biafirînin
  • Pêvajoyên karsaziyê jêbirin
  • Çalakiyên nû çêbikin
  • Çalakiyên biguherînin
  • Çalakiyên jêbirin

vir vîdyoya demo. Û hin dîmen:

Process Explorer

Python Gateway li InterSystems IRIS

Edîtorê pêvajoyê

Python Gateway li InterSystems IRIS

mîhengê

  1. Hûn ê hewceyê InterSystems IRIS 2019.2+ bibin.
  2. PythonGateway v0.8+ saz bikin (tenê hewce dike isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Koda ObjectScript ji depoyê nûve bikin.
  4. Dardekirin do ##class(isc.py.util.Jupyter).Install() û li pey pêşniyaran.

Dokumentasyonê.

vebiguherin

MLToolkit komek amûran e ku armanc dike ku modelan û hawîrdorek danûstendinê bihevre bike da ku modelên çêkirî bi hêsanî rasterast di pêvajoyên karsaziya we de werin bikar anîn. Python Gateway beşek ji MLToolkit-ê ye û bi zimanê Python re entegrasyonê peyda dike, ku dihêle hûn her algorîtmayên fêrbûna makîneyê yên ku li Python-ê hatine afirandin (hawirdora bingehîn ji bo gelek Zanyarên Daneyê) organîze bikin, gelek pirtûkxaneyên amade bikar bînin da ku zû biafirînin AI-ya analîtîk a adapteyî, robotîkî / Çareseriyên ML li ser platforma InterSystems IRIS.

references

MLToolkit

Koma bikarhênerê MLToolkit depoyek GitHub ya taybet e ku wekî beşek ji rêxistina GitHub ya pargîdanî ya InterSystems hatî afirandin. Ew ji bikarhênerên derveyî yên ku saz dikin, fêr dibin, an jî berê xwe didin pêkhateyên MLToolkit, tevî Python Gateway, têne navnîş kirin. Kom di warên kirrûbirra, çêkirinê, derman û gelek pîşesaziyên din de hejmarek dozên hatine bicîh kirin (bi koda çavkaniyê û daneyên ceribandinê). Ji bo ku hûn beşdarî koma bikarhênerê ML Toolkit bibin, ji kerema xwe e-nameyek kurt bişînin navnîşana jêrîn: [email parastî] û di nameya xwe de agahdariya jêrîn bicîh bikin:

  • Navê bikarhêner GitHub
  • Rêxistin (hûn dixebitin an dixwînin)
  • Position (helwesta weya rastîn di rêxistina we de, an "Xwendekar" an "Serbixwe").
  • welat

Ji bo kesên ku gotar xwendiye û bi InterSystems IRIS re eleqedar in wekî platformek ji bo pêşdebirin an mêvandariya mekanîzmayên fêrbûna makîneyê û îstîxbarata sûnî, em we vedixwînin ku hûn senaryoyên mimkun ên balkêş ên pargîdaniya we nîqaş bikin. Em ê bi hêsanî hewcedariyên pargîdaniya we analîz bikin û bi hev re plansaziyek çalakiyê diyar bikin; navnîşana e-nameya têkiliyê ya koma meya pisporê AI/ML - [email parastî].

Source: www.habr.com

Add a comment