Geata Python ann an InterSystems IRIS

Tha an artaigil seo mu dheidhinn Python Gateway, pròiseact coimhearsnachd stòr fosgailte airson àrd-ùrlar dàta InterSystems IRIS. Leigidh am pròiseact seo leat algorithms ionnsachadh inneal sam bith a chaidh a chruthachadh ann am Python (am prìomh àrainneachd airson mòran de luchd-saidheans dàta) a chuir air dòigh), grunn leabharlannan deiseil a chleachdadh gus fuasglaidhean atharrachail, robotach AI / ML a chruthachadh gu sgiobalta air àrd-ùrlar InterSystems IRIS. San artaigil seo, seallaidh mi mar as urrainn do InterSystems IRIS pròiseasan a chuir air dòigh ann am Python, conaltradh èifeachdach a dhèanamh air dàta dà-shligheach, agus pròiseasan gnìomhachais tùrail a chruthachadh.

Plana

  1. Ro-ràdh
  2. Innealan.
  3. Stàladh
  4. API.
  5. Eadar-obrachaidh.
  6. Leabhar-nota Jupyter.
  7. Co-dhùnaidhean.
  8. Ceanglaichean.
  9. MLToolkit.

Ro-ràdh

Tha Python na chànan prògramaidh àrd-ìre, coitcheann a tha ag amas air cinneasachd luchd-leasachaidh agus comas leughaidh còd a leasachadh. Anns an t-sreath artaigilean seo, bruidhnidh mi mu na cothroman air Python a chleachdadh air an àrd-ùrlar InterSystems IRIS, le prìomh fhòcas an artaigil seo air cleachdadh Python mar chànan airson modalan ionnsachaidh innealan a chruthachadh agus a ruith.

Is e clas de dhòighean inntleachd fuadain a th’ ann an ionnsachadh inneal (ML), agus chan e am feart sònraichte sin fuasgladh dìreach air duilgheadas, ach ionnsachadh ann am pròiseas fuasgladh fhaighinn air mòran dhuilgheadasan coltach ris.

Tha algorithms ionnsachadh innealan agus modalan a’ fàs nas cumanta. Tha iomadh adhbhar ann airson seo, ach tha e uile an urra ri ruigsinneachd, sìmplidheachd agus coileanadh toraidhean practaigeach. A bheil cruinneachadh no eadhon lìonra neural a’ modaladh teicneòlas ùr?

Gu dearbh chan eil, ach an-diugh chan eil feum air na ceudan de mhìltean de loidhnichean còd a sgrìobhadh gus aon mhodail a ruith, agus tha cosgais cruthachadh agus cleachdadh mhodalan a ’fàs nas lugha agus nas lugha.

Tha innealan a’ tighinn air adhart - ged nach eil innealan AI/ML gu tur GUI-centric againn, tha an adhartas a chunnaic sinn le mòran chlasaichean eile de shiostaman fiosrachaidh, leithid BI (bho bhith a’ sgrìobhadh còd gu bhith a’ cleachdadh frèaman agus fuasglaidhean rèiteachaidh GUI-centric). cuideachd air fhaicinn ann an innealan airson AI/ML a chruthachadh. Tha sinn mu thràth air a dhol seachad air an ìre de chòd sgrìobhaidh agus an-diugh bidh sinn a’ cleachdadh frèaman airson modalan a thogail agus a thrèanadh.

Tha leasachaidhean eile, leithid an comas modal ro-thrèanadh a sgaoileadh far nach fheum an neach-cleachdaidh deireannach ach crìoch a chuir air trèanadh a’ mhodail air an dàta sònraichte aca, cuideachd ga dhèanamh nas fhasa tòiseachadh le ionnsachadh innealan. Tha na h-adhartasan sin a’ dèanamh ionnsachadh innealan ionnsachaidh gu math nas fhasa an dà chuid do phroifeiseantaich agus do chompanaidhean san fharsaingeachd.

Air an làimh eile, tha sinn a 'tional barrachd is barrachd dàta. Le àrd-ùrlar dàta aonaichte mar InterSystems IRIS, faodar am fiosrachadh seo gu lèir ullachadh sa bhad agus a chleachdadh mar chur-a-steach do mhodalan ionnsachaidh innealan.

Leis a’ ghluasad chun sgòth, tha cur air bhog pròiseactan AI/ML a’ fàs nas fhasa na bha e a-riamh. Chan urrainn dhuinn ach na goireasan a tha a dhìth oirnn ithe. A bharrachd air an sin, le taing don cho-shìnteadh a tha àrd-ùrlaran sgòthan a’ tabhann, is urrainn dhuinn ùine a shàbhaladh.

Ach dè mu dheidhinn na toraidhean? Seo far a bheil cùisean a’ fàs nas iom-fhillte. Tha mòran innealan ann airson modalan a thogail, air am bi mi a 'bruidhinn an ath rud. Chan eil e furasta modal math a thogail, ach dè an ath rud? Tha a bhith a’ dèanamh prothaid bho bhith a’ cleachdadh modail gnìomhachais cuideachd na obair nach eil cho beag. Is e freumh na trioblaid sgaradh eallach obrach mion-sgrùdaidh agus gnìomh, agus modalan dàta. Nuair a bhios sinn a’ trèanadh modail, mar as trice bidh sinn ga dhèanamh air dàta eachdraidheil. Ach tha an t-àite airson a’ mhodail thogte ann an giullachd dàta gnìomh. Dè cho math ’s a tha am modal lorg malairt meallta as fheàrr ma ruitheas sinn e uair san latha? Tha na sgamadairean air falbh o chionn fhada leis an airgead. Feumaidh sinn am modail a thrèanadh air dàta eachdraidheil, ach feumaidh sinn cuideachd a chuir an sàs ann an àm fìor air dàta ùr a tha a’ tighinn a-steach gus an urrainn dha ar pròiseasan gnìomhachais a bhith ag obair a rèir na ro-innse a rinn am modail.

Is e seata innealan a th’ ann an Inneal ML a tha ag amas air dìreach sin a dhèanamh: aonaich mhodalan agus àrainneachd gnìomhachd gus am bi e furasta na modalan togte a chleachdadh gu dìreach anns na pròiseasan gnìomhachais agad. Tha Python Gateway mar phàirt den ML Toolkit agus a’ toirt seachad amalachadh leis a’ chànan Python (coltach ri mar a tha R Gateway, le bhith mar phàirt den ML Toolkit a’ toirt seachad amalachadh leis a’ chànan R).

Pasgan-obrach

Mus lean sinn air adhart, bu mhath leam cunntas a thoirt air beagan innealan Python agus leabharlannan a chleachdas sinn nas fhaide air adhart.

de theicneòlas

  • Tha Python na chànan prògramaidh eadar-mhìnichte, àrd-ìre, coitcheann. Is e prìomh bhuannachd a’ chànain an leabharlann mòr aige de leabharlannan matamataigeach, ML agus AI. Coltach ri ObjectScript, is e cànan a tha ag amas air cuspair a th’ ann, ach tha a h-uile dad air a mhìneachadh gu dinamach seach gu statach. Cuideachd tha a h-uile dad na nì. Tha artaigilean nas fhaide air adhart a’ gabhail ris gu bheil eòlas a’ dol seachad air a’ chànan. Ma tha thu airson tòiseachadh air ionnsachadh, tha mi a’ moladh tòiseachadh le sgrìobhainnean.
  • Airson na h-eacarsaichean a leanas againn, seata Python 3.6.7 64 bit.
  • IDE: Bidh mi a 'cleachdadh PyCharm, ach san fharsaingeachd tha iad много. Ma chleachdas tu Atelier, tha plugan Eclipse ann airson luchd-leasachaidh Python. Ma tha thu a’ cleachdadh Còd VS, tha leudachadh ann airson Python.
  • Leabhar-nota: An àite IDE, faodaidh tu na sgriobtaichean agad a sgrìobhadh agus a cho-roinn ann an leabhraichean notaichean air-loidhne. Is e am fear as mòr-chòrdte dhiubh Jupyter.

Leabharlannan

Seo liosta (neo-iomlan) de leabharlannan ionnsachadh innealan:

  • cnapach - pasgan bunaiteach airson àireamhachadh mionaideach.
  • Bidh pandathan - structaran dàta àrd-choileanaidh agus innealan sgrùdaidh dàta.
  • Mathplotlib - cruthachadh grafaichean.
  • seabhag - fradharc dàta stèidhichte air matplotlib.
  • Sglearn - dòighean ionnsachaidh inneal.
  • XGB àrdachadh - algorithms ionnsachadh innealan taobh a-staigh frèam modh-obrach àrdachadh caisead.
  • Gensim —NLP.
  • Keras - lìonraidhean neural.
  • Sruth tensor - àrd-ùrlar airson modalan ionnsachaidh inneal a chruthachadh.
  • PyTorch na àrd-ùrlar airson modalan ionnsachaidh inneal a chruthachadh, le fòcas air Python.
  • Nighean - PMML bho dhiofar mhodalan.

Tha teicneòlasan AI/ML a’ dèanamh gnìomhachas nas èifeachdaiche agus nas sùbailte. A bharrachd air an sin, an-diugh tha na teicneòlasan sin a’ fàs nas fhasa a leasachadh agus a bhuileachadh. Tòisich ag ionnsachadh mu theicneòlasan AI / ML agus mar as urrainn dhaibh do bhuidheann a chuideachadh gus fàs.

suidheachadh

Tha grunn dhòighean ann air Python Gateway a stàladh agus a chleachdadh:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Cleachd dealbh bho DockerHub
    • Cruthaich do shealladh fhèin

Ge bith dè an dòigh stàlaidh, feumaidh tu an còd stòr. Is e an aon àite airson an còd a luchdachadh sìos duilleag foillseachaidh. Tha fiosan seasmhach deuchainn ann, dìreach gabh am fear as ùire. Aig an àm seo tha e 0.8, ach thar ùine bidh feadhainn ùra ann. Na dèan clonadh/luchdaich sìos an stòr-tasgaidh, luchdaich sìos am brath as ùire.

OS

Ma tha thu a’ stàladh Python Gateway air siostam-obrachaidh, feumaidh tu Python a stàladh an toiseach (ge bith dè an siostam-obrachaidh). Airson seo:

  1. Stàlaich Python 3.6.7 64 bit. Thathas a’ moladh Python a stàladh san eòlaire bunaiteach.
  2. Stàlaich am modal dill: pip install dill.
  3. Luchdaich sìos an còd ObjectScript (i.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) gu raon sam bith le bathar. Ma tha thu ag iarraidh raon a tha ann mu thràth airson taic a thoirt do thoraidhean, ruith: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Àite gairm DLL/SO/DYLIB gu pasgan bin an eisimpleir InterSystems IRIS agad. Feumaidh faidhle an leabharlainn a bhith ri fhaighinn san t-slighe air ais write ##class(isc.py.Callout).GetLib().

Windows

  1. Dèan cinnteach gu bheil an àrainneachd caochlaideach PYTHONHOME puingean gu Python 3.6.7.
  2. Dèan cinnteach gu bheil caochladair àrainneachd an t-siostaim PATH tha caochladair ann PYTHONHOME (no an eòlaire air a bheil e a’ comharrachadh).

Linux (Debian/Ubuntu)

  1. Dèan cinnteach gu bheil an caochladair àrainneachd PATH tha ann /usr/lib и /usr/lib/x86_64-linux-gnu. Cleachd faidhle /etc/environment gus caochladairean àrainneachd a shuidheachadh.
  2. Ann an cùis mhearachdan undefined symbol: _Py_TrueStruct suidhich an suidheachadh PythonLib. cuideachd ann an Leugh mi tha earrann Fuasgladh dhuilgheadasan ann.

Mac

  1. An-dràsta chan eil ach Python 3.6.7 a’ faighinn taic Python.org. Thoir sùil air a’ chaochladair PATH.

Ma dh’ atharraich thu caochladairean àrainneachd, ath-thòisich an toradh InterSystems agad.

Docker

Tha grunn bhuannachdan aig cleachdadh soithichean:

  • So-ghiùlain
  • Èifeachdas
  • Insulation
  • Aotromachd
  • Neo-sheasmhachd

Feuch seo sreath de artaigilean airson tuilleadh fiosrachaidh mu bhith a’ cleachdadh Docker le toraidhean InterSystems.

Tha a h-uile togalach Python Gateway an-dràsta stèidhichte air soithichean 2019.4.

Dealbh deiseil

Ruith: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestgus Python Gateway a luchdachadh sìos agus a ruith le InterSystems IRIS Community Edition. Sin e.

Cruthaich do shealladh fhèin

Gus ìomhaigh docker a thogail, ruith ann am freumh an stòr: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Gu gnàthach, tha an ìomhaigh air a thogail stèidhichte air an ìomhaigh store/intersystems/iris-community:2019.4.0.383.0, ach faodaidh tu seo atharrachadh le bhith a 'suidheachadh caochladair IMAGE.
Gus togail bho InterSystems IRIS, ruith: `docker build --build-arg IMAGE=store/intersystems/iris: 2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest".

Às deidh seo faodaidh tu an ìomhaigh docker a ruith:

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

Ma tha thu a’ cleachdadh ìomhaigh stèidhichte air InterSystems IRIS Community Edition, faodaidh tu an iuchair fhàgail air falbh.

beachdan

  • Pròiseas deuchainn isc.py.test.Process a’ sàbhaladh grunn dhealbhan gu eòlaire sealach. Is dòcha gum bi thu airson an t-slighe seo atharrachadh dhan eòlaire air a chuir suas. Gus seo a dhèanamh, deasaich an suidheachadh WorkingDir a' sònrachadh an eòlaire suidhichte.
  • Gus faighinn gu ruith Terminal: docker exec -it irispy sh.
  • Cothrom air an t-Siostam Riaghlaidh Portal le logadh a-steach SuperUser/SYS.
  • Gus stad a chur air a 'ghobhar, ruith: docker stop irispy && docker rm --force irispy.

A 'dearbhadh an stàladh

Aon uair ‘s gu bheil thu air Python Gateway a chuir a-steach, is fhiach dèanamh cinnteach gu bheil e ag obair. Cuir an gnìomh a’ chòd seo anns a’ chrìoch InterSystems IRIS:

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

Bu chòir an toradh a bhith: HELLO - luach caochlaideach Python x. Ma tha an inbhe tilleadh sc 's e mearachd no var falamh, seic Readme - Earrann fuasglaidh dhuilgheadasan.

API

Tha Python Gateway air a chuir a-steach agus tha thu air dearbhadh gu bheil e ag obair. Tha an t-àm ann tòiseachadh air a chleachdadh!
Is e am prìomh eadar-aghaidh airson Python isc.py.Main. Tha e a’ tabhann na buidhnean de dhòighean a leanas (tilleadh uile %Status):

  • Cur an gnìomh Còd
  • Transrachadh dàta
  • Auxiliary

Cur an gnìomh Còd

Leigidh na modhan sin leat còd Python neo-riaghailteach a chuir an gnìomh.

Sreath sìmplidh

SimpleString - is e seo am prìomh dhòigh. Feumaidh e 4 argamaidean roghainneil:

  • code - loidhne còd ri chur an gnìomh. Caractar biadhaidh loidhne: $c(10).
  • returnVariable - ainm a’ chaochladair ri thilleadh.
  • serialization - mar a nì thu sreathachadh returnVariable. 0 - sreang (àbhaisteach), 1 - ath-aithris.
  • result — Iomradh ByRef air a’ chaochladair anns a bheil an luach sgrìobhte returnVariable.

Gu h-àrd rinn sinn:

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

San eisimpleir seo, bidh sinn a’ sònrachadh caochladair Python x ciallachadh Hello agus ag iarraidh luach caochladair Python a thilleadh x gu caochladair ObjectScript var.

Còd a chur an gnìomh

Tha ExecuteCode na roghainn eile nas sàbhailte agus nach eil cho cuingealaichte SimpleString.
Tha loidhnichean anns an àrd-ùrlar InterSystems IRIS cuingealaichte ri 3 caractar, agus ma tha thu airson pìos còd nas fhaide a chuir an gnìomh, feumaidh tu snàithleanan a chleachdadh.
Thathas a’ gabhail ri dà argamaid:

  • code - loidhne no sruth de chòd Python ri chur an gnìomh.
  • variable - (roghainneil) a 'sònrachadh toradh cur gu bàs code an caochladair Python seo.

Eisimpleir airson a chleachdadh:

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

San eisimpleir seo, bidh sinn ag iomadachadh 2 le 3 agus a’ sgrìobhadh an toradh gu caochladair Python y.

Transrachadh dàta

Cuir seachad dàta gu agus bho Python.

Python -> InterSystems IRIS

Tha dòighean 4 ann airson luach caochladair Python fhaighinn ann an InterSystems IRIS, a rèir an t-sreathachadh a dh’ fheumas tu:

  • String airson seòrsachan dàta sìmplidh agus debugging.
  • Repr airson rudan sìmplidh a stòradh agus dì-bhugachadh.
  • JSON airson làimhseachadh dàta furasta air taobh InterSystems IRIS.
  • Pickle airson rudan a shàbhaladh.

Leigidh na modhan sin leat caochladairean fhaighinn air ais bho Python mar shreang no sruthan.

  • GetVariable(variable, serialization, .stream, useString) - faigh serialization caochlaideach variable в stream. Ma tha useString is 1 agus tha an t-sreathachadh air a chuir air sreang, an uairsin thèid sreang a thilleadh agus chan e sruth.
  • GetVariableJson(variable, .stream, useString) - faigh sreathachadh JSON de chaochladair.
  • GetVariablePickle(variable, .stream, useString, useDill) - faigh sreathadh Pickle (no Dill) de chaochladair.

Feuchaidh sinn ri ar caochladair fhaighinn y.

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

InterSystems IRIS -> Python

A’ luchdachadh dàta bho InterSystems IRIS gu Python.

  • ExecuteQuery(query, variable, type, namespace) - a’ cruthachadh stòr-dàta (pandas dataframe no list) bhon cheist sql agus ga shuidheachadh gu caochladair Python variable. Poca plastaig isc.py feumaidh a bhith ri fhaighinn san sgìre namespace - thèid an t-iarrtas a chuir an gnìomh an sin.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - a’ luchdachadh dàta cruinne global bho fho-sgrìobhadh start gu end ann am Python mar chaochladair seòrsa type: list, no pandathan dataframe. Tuairisgeul air argamaidean roghainneil mask agus labels ri fhaighinn ann an sgrìobhainnean clas agus stòr Docs gluasad dàta.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - a’ luchdachadh dàta clas class bho id start gu end ann am Python mar chaochladair seòrsa type: list, no pandathan dataframe. properties - liosta (air a sgaradh le cromag) de fheartan clas a dh’ fheumar a luchdachadh a-steach don t-seata dàta. Masgaichean le taic * и ?. bunaiteach - * (gach seilbh). Seilbh %%CLASSNAME air an dearmad.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - a 'luchdachadh dàta clàr table bho id start gu end ann am Python.

ExecuteQuery - uile-choitcheann (thèid ceist SQL ceart sam bith a chuir gu Python). Ach, ExecuteGlobal agus a luchd-gleidhidh ExecuteClass и ExecuteTable obrachadh le grunn chuingealachaidhean. Tha iad tòrr nas luaithe (3-5 tursan nas luaithe na an draibhear ODBC agus 20 tursan nas luaithe ExecuteQuery). Tuilleadh fiosrachaidh aig Docs gluasad dàta.
Bidh na dòighean sin uile a’ toirt taic do ghluasad dàta bho raon sam bith. Poca plastaig isc.py feumaidh a bhith ri fhaighinn san raon targaid.

Cuir an gnìomh Ceist

ExecuteQuery(request, variable, type, namespace) - a’ gluasad toraidhean ceist SQL ceart gu Python. Is e seo an dòigh gluasad dàta as slaodaiche. Cleachd e ma tha ExecuteGlobal agus chan eil a luchd-gleidhidh rim faighinn.

Argumaidean:

  • query - ceist sql.
  • variable - ainm an caochladair Python anns a bheil an dàta sgrìobhte.
  • type - list no Pandas dataframe.
  • namespace - an raon anns an tèid an t-iarrtas a chur an gnìomh.

Cur an gnìomh Global

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - a’ dol seachad air cruinne ann am Python.

Argumaidean:

  • global - ainm cruinne gun ^
  • variable - ainm an caochladair Python anns a bheil an dàta sgrìobhte.
  • type - list no Pandas dataframe.
  • start - a’ chiad fho-sgrìobhadh den t-saoghal. Gu feum %Integer.
  • end - an fho-sgrìobhadh mu dheireadh den t-saoghal. Gu feum %Integer.
  • mask - masg luach cruinneil. Faodaidh am masg a bhith nas giorra na an àireamh de raointean air feadh na cruinne (anns an t-suidheachadh sin thèid na raointean aig an deireadh a leum). Mar a chuireas tu cruth air masg:
    • + cuir seachad an luach mar a tha.
    • - skip luach.
    • b - seòrsa Boolean (0 - False, an còrr - True).
    • d - Ceann-latha (bho $ horolog, air Windows bho 1970, air Linux bho 1900).
    • t - Ùine ($ horolog, diogan às deidh meadhan oidhche).
    • m - Stampa-ama (sreang cruth BLIADHNA-MÌOS-LATHA UAIR: GEÀRR-CHUNNTAS: DARA).
  • labels — % Liosta ainmean nan colbhan. Is e a’ chiad eileamaid ainm an fho-sgrìobhaidh.
  • namespace - an raon anns an tèid an t-iarrtas a chur an gnìomh.

Clas a chur gu bàs

Còmhdaich thairis ExecuteGlobal. Stèidhichte air mìneachadh a 'chlas, ag ullachadh gairm ExecuteGlobal agus ga ghairm.

ExecuteClass(class, variable, type, start, end, properties, namespace) - a’ dol seachad air dàta clas ann am Python.

Argumaidean:

  • class - ainm clas
  • variable - ainm an caochladair Python anns a bheil an dàta sgrìobhte.
  • type - list no Pandas dataframe.
  • start - ID tòiseachaidh.
  • end — Id deireannach
  • properties - liosta (air a sgaradh le cromag) de fheartan clas a dh’ fheumar a luchdachadh a-steach don t-seata dàta. Masgaichean le taic * и ?. bunaiteach - * (gach seilbh). Seilbh %%CLASSNAME air an dearmad.
  • namespace - an raon anns an tèid an t-iarrtas a chur an gnìomh.

Thèid a h-uile seilbh seachad mar a tha ach a-mhàin togalaichean seòrsa %Date, %Time, %Boolean и %TimeStamp - tha iad air an tionndadh gu na clasaichean Python co-fhreagarrach.

Clàr-gnìomha

Còmhdaich thairis ExecuteClass. Ag eadar-theangachadh ainm a’ chlàir gu ainm a’ chlas agus fiosan ExecuteClass. Ainm-sgrìobhte:

ExecuteTable(table, variable, type, start, end, properties, namespace) - a’ toirt seachad dàta bùird gu Python.

Argumaidean:

  • table - ainm clàr.
    Tha a h-uile argamaid eile air a dhol seachad mar a tha ExecuteClass.

Notaichean

  • ExecuteGlobal, ExecuteClass и ExecuteTable obraich a cheart cho luath.
  • ExecuteGlobal 20 tursan nas luaithe na ExecuteQuery air seataichean dàta mòra (ùine gluasaid> 0.01 diogan).
  • ExecuteGlobal, ExecuteClass и ExecuteTable obair air cruinne-cè leis an structar seo: ^global(key) = $lb(prop1, prop2, ..., propN) far a bheil key - iomlanachd.
  • airson ExecuteGlobal, ExecuteClass и ExecuteTable raon de luachan le taic %Date a 'freagairt ris an raon mktime agus tha e an urra ris an OS (uinneaganmeud: 1970-01-01, linux 1900-01-01, mac). Cleachd %TimeStampgus dàta a ghluasad taobh a-muigh an raoin seo no cleachd pandas dataframe oir is e cuingealachadh liosta a-mhàin a tha seo.
  • airson ExecuteGlobal, ExecuteClass и ExecuteTable tha a h-uile argamaid ach a-mhàin an stòr dàta (cruinneil, clas no clàr) agus caochlaideach roghainneil.

eisimpleirean

Clas deuchainn isc.py.test.Duine tha dòigh ann a sheallas a h-uile roghainn gluasad dàta:

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)

Call an dòigh-obrach do ##class(isc.py.test.Person).Test() gus faicinn mar a tha a h-uile modh gluasad dàta ag obair.

Dòighean cuideachaidh

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - faigh fiosrachadh mun chaochladair: ge bith a bheil e air a mhìneachadh, a chlas agus fad sreathachaidh.
  • GetVariableDefined(variable, .defined) - a bheil an caochladair air a mhìneachadh.
  • GetVariableType(variable, .type) - faigh clas an caochlaideach.
  • GetStatus() - faigh agus thoir air falbh an eisgeachd mu dheireadh air taobh Python.
  • GetModuleInfo(module, .imported, .alias) - faigh inbhe caochlaideach modal agus in-mhalairt.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - faigh fiosrachadh mun ghnìomh.

Eadar-obrachaidh

Tha thu air ionnsachadh mar a chuireas tu fios gu Python Gateway bhon cheann-uidhe, a-nis tòisichidh sinn ga chleachdadh ann an riochdachadh. Is e am bunait airson eadar-obrachadh le Python sa mhodh seo isc.py.ens.Operation. Tha e a’ leigeil leinn:

  • Cuir an gnìomh còd ann am Python
  • Sàbhail / thoir air ais co-theacsa Python
  • Luchdaich agus faigh dàta bho Python

Gu bunaiteach, tha gnìomhachd Python na chòmhdach thairis isc.py.Main. Obrachaidh isc.py.ens.Operation a’ toirt seachad comas eadar-obrachadh le pròiseas Python bho thoraidhean InterSystems IRIS. Tha còig ceistean a’ faighinn taic:

  • isc.py.msg.ExecutionRequest gus còd Python a chuir an gnìomh. Tilleadh isc.py.msg.ExecutionResponse leis an toradh cur gu bàs agus luachan nan caochladairean a chaidh iarraidh.
  • isc.py.msg.StreamExecutionRequest gus còd Python a chuir an gnìomh. Tilleadh isc.py.msg.StreamExecutionResponse toradh coileanadh agus luachan nan caochladairean a chaidh iarraidh. Analog isc.py.msg.ExecutionRequest, ach a’ gabhail ri agus a’ tilleadh sruthan an àite sreangan.
  • isc.py.msg.QueryRequest gus toradh cur an gnìomh ceist SQL a thar-chuir. Tilleadh Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest airson a bhith a’ dol seachad air dàta cruinne/clas/clàir. Tilleadh Ens.Response.
  • isc.py.msg.SaveRequest gus co-theacs Python a shàbhaladh. Tilleadh Ens.StringResponse le ID co-theacsa.
  • isc.py.msg.RestoreRequest gus co-theacs Python a thoirt air ais.

    A bharrachd air sin, isc.py.ens.Operation tha dà shuidheachadh ann:

    • Initializer - a’ taghadh clas a chuireas an eadar-aghaidh an gnìomh isc.py.init.Abstract. Faodar a chleachdadh airson gnìomhan, modalan, clasaichean, msaa a luchdachadh. Tha e air a chur an gnìomh aon uair nuair a thòisicheas am pròiseas.
    • PythonLib - (Linux a-mhàin) ma chì thu mearachdan nuair a bhios tu a’ luchdachadh, suidhich a luach gu libpython3.6m.so no eadhon anns an t-slighe slàn gu leabharlann Python.

Cruthachadh pròiseasan gnìomhachais

Tha dà chlas ann a chuidicheas le bhith a’ leasachadh phròiseasan gnìomhachais:

  • isc.py.ens.ProcessUtils a’ leigeil leat notaichean a tharraing à gnìomhan le ionadachadh caochlaideach.
  • isc.py.util.BPEmulator ga dhèanamh furasta pròiseasan gnìomhachais a dhearbhadh le Python. Faodaidh e pròiseas gnìomhachais (pàirtean Python) a chuir an gnìomh sa phròiseas gnàthach.

Ionadail caochlaideach

A h-uile pròiseas gnìomhachais a thàinig bho isc.py.ens.ProcessUtils, is urrainn am modh a chleachdadh GetAnnotation(name) gus luach nota gnìomhachd fhaighinn leis an ainm. Faodaidh caochladairean a bhith anns an nota gnìomhachd a thèid a thomhas air taobh InterSystems IRIS mus tèid a chuir gu Python. Seo an co-chòrdadh airson ionadachadh caochlaideach:

  • ${class:method:arg1:...:argN} - gairm modh
  • #{expr} - cuir an gnìomh còd ann an cànan ObjectScript.

Tha eisimpleir ri fhaighinn anns a 'phròiseas gnìomhachais deuchainn isc.py.test.Process, mar eisimpleir, ann an gnìomhachd Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Anns an eisimpleir seo:

  • #{process.WorkDirectory} a’ tilleadh seilbh WorkDirectory an nì process, a tha na eisimpleir den chlas isc.py.test.Process iadsan. pròiseas gnìomhachais làithreach.
  • ${%PopulateUtils:Integer:1:100} gairm modh Integer clas %PopulateUtils, argamaidean a’ dol seachad 1 и 100, a 'tilleadh àireamhair air thuaiream san raon 1...100.

Dèan deuchainn air pròiseas gnìomhachais

Tha toraidhean deuchainn agus pròiseasan gnìomhachais deuchainn rim faighinn gu bunaiteach mar phàirt de Gateway Python. Airson an cleachdadh:

  1. Ann an ceann-uidhe an OS, ruith: pip install pandas matplotlib seaborn.
  2. Ann an ceann-uidhe InterSystems IRIS, ruith: do ##class(isc.py.test.CannibalizationData).Import() gus dàta deuchainn a lìonadh.
  3. Cur air bhog bathar isc.py.test.Production.
  4. Cuir an seòrsa iarrtas Ens.Request в isc.py.test.Process.

Chì sinn mar a tha e uile ag obair còmhla. Fosgailte isc.py.test.Process ann an deasaiche BPL:

Geata Python ann an InterSystems IRIS

Cur an gnìomh Còd

Is e an dùbhlan as cudromaiche còd Python a chuir an gnìomh:

Geata Python ann an InterSystems IRIS

Ceist air a chleachdadh isc.py.msg.ExecutionRequest, seo na feartan aige:

  • Code - Còd Python.
  • SeparateLines - am bu chòir an còd a roinn ann an loidhnichean airson a chuir gu bàs. $c(10) (n) air a chleachdadh airson sreangan a sgaradh. Thoir an aire nach eilear a’ moladh an teachdaireachd gu lèir a phròiseasadh aig an aon àm, chan eil an gnìomh seo ach airson a phròiseasadh def agus abairtean ioma-loidhne coltach ris. Deònach 0.
  • Variables - liosta de chaochladairean le cromag a thèid a chur ris an fhreagairt.
  • Serialization - Mar a nì thu sreath de na caochladairean a tha sinn airson a thilleadh. Roghainnean: Str, Repr, JSON, Pickle и Dill, bunaiteach Str.

Anns a 'chùis againn, cha bhith sinn a' suidheachadh ach an t-seilbh Code, mar sin bidh a h-uile seilbh eile a’ cleachdadh nan luachan bunaiteach. Shuidhich sinn e le bhith a 'gairm process.GetAnnotation("Import pandas"), a thilleas aig àm ruith nota às deidh ionadachadh caochlaideach a dhèanamh. Às dèidh na h-uile, an còd import pandas as pd thèid a thoirt gu Python. GetAnnotation dh’ fhaodadh gum biodh e feumail airson sgriobtaichean Python ioma-loidhne fhaighinn, ach chan eil bacadh sam bith air an dòigh seo air còd fhaighinn. Faodaidh tu an t-seilbh a shuidheachadh Code ann an dòigh sam bith a tha iomchaidh dhut.

A' faighinn caochlaidhean

Dùbhlan inntinneach eile a 'cleachdadh isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Geata Python ann an InterSystems IRIS

Bidh e a’ tomhas a’ Mhatrix Co-dhàimh air taobh Python agus a’ toirt a-mach an caochladair corrmat air ais gu InterSystems IRIS ann an cruth JSON le bhith a’ suidheachadh feartan an iarrtais:

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

Chì sinn na toraidhean ann an Visual Trace:

Geata Python ann an InterSystems IRIS

Agus ma tha feum againn air an luach seo anns a’ BP, gheibh sinn e mar seo: callresponse.Variables.GetAt("corrmat").

Transrachadh dàta

An ath rud, bruidhnidh sinn mu bhith a’ gluasad dàta bho InterSystems IRIS gu Python; bidh a h-uile iarrtas airson gluasad dàta a’ cur an eadar-aghaidh an gnìomh isc.py.msg.DataRequesta tha a 'toirt seachad na feartan a leanas:

  • Variable - caochladair Python anns a bheil dàta air a sgrìobhadh.
  • Type - seòrsa caochlaideach: dataframe (frèam dàta pandathan) no list.
  • Namespace - an raon bhon a gheibh sinn dàta. Poca plastaig isc.py bu chòir a bhith ri fhaighinn san raon seo. Faodaidh seo a bhith na raon gun taic toraidh.

Stèidhichte air an eadar-aghaidh seo, tha 4 clasaichean iarrtasan air an cur an gnìomh:

  • isc.py.msg.QueryRequest - suidhich an t-seilbh Query gus ceist SQL a chuir.
  • isc.py.msg.ClassRequest - suidhich an t-seilbh Class gus dàta clas a thoirt seachad.
  • isc.py.msg.TableRequest - seilbh stèidhichte Table gus dàta clàr a ghluasad.
  • isc.py.msg.GlobalRequest - seilbh stèidhichte Global airson gluasad dàta cruinneil.

Anns a 'phròiseas deuchainn, thoir sùil air a' ghnìomhachd RAWcàite isc.py.msg.QueryRequest air a thaisbeanadh ann an gnìomh.

Geata Python ann an InterSystems IRIS

Sàbhaladh/Ath-nuadhachadh Co-theacsa Python

Mu dheireadh, is urrainn dhuinn an co-theacsa Python a shàbhaladh ann an InterSystems IRIS, gus seo a dhèanamh cuiridh sinn isc.py.msg.SaveRequest le argamaidean:

  • Mask - Chan eil ach caochladairean a tha a rèir an masg air an sàbhaladh. Le taic * и ?. Eisimpleir: "Data*, Figure?". Deònach *.
  • MaxLength - An fhad as motha den chaochladair a chaidh a stòradh. Ma tha sreathachadh caochladair nas fhaide, thèid a leigeil seachad. Suidhich gu 0 gus caochladairean de dh'fhaid sam bith fhaighinn. Deònach $$$MaxStringLength.
  • Name - Ainm co-theacsa (roghainneil).
  • Description - Tuairisgeul air a’ cho-theacsa (roghainneil).

Tilleadh Ens.StringResponse с Id co-theacs air a shàbhaladh. Anns a 'phròiseas deuchainn, thoir sùil air a' ghnìomhachd Save Context.

Iarrtas co-cheangailte isc.py.msg.RestoreRequest luchdaich co-theacsa bho InterSystems IRIS gu Python:

  • ContextId - aithnichear co-theacsa.
  • Clear - soilleir an co-theacsa mus ath-nuadhachadh.

Leabhar-nota Jupyter

Leabhar-nota Jupyter na aplacaid lìn le còd fosgailte a leigeas leat leabhraichean notaichean a chruthachadh agus fhoillseachadh anns a bheil còd, ìomhaighean agus teacsa. Leigidh Python Gateway leat pròiseasan BPL fhaicinn agus a dheasachadh ann an cruth Leabhar-nota Jupyter. Thoir an aire gu bheil an neach-tiomnaidh Python 3 àbhaisteach ga chleachdadh an-dràsta.

Tha an leudachadh seo a’ gabhail ris gu bheil còd Python ann an notaichean agus a’ cleachdadh ainmean gnìomhachd mar thiotalan roimhe. Tha e comasach a-nis pròiseasan gnìomhachais PythonGateway a leasachadh ann an Jupyter Notebook. Seo na tha comasach:

  • Cruthaich pròiseasan gnìomhachais ùra
  • Sguab às pròiseasan gnìomhachais
  • Cruthaich gnìomhan ùra
  • Atharraich gnìomhan
  • Sguab às gnìomhan

an seo bhidio demo. Agus beagan dhealbhan-sgrìn:

Explorer pròiseas

Geata Python ann an InterSystems IRIS

Deasaiche phròiseas

Geata Python ann an InterSystems IRIS

suidheachadh

  1. Feumaidh tu InterSystems IRIS 2019.2+.
  2. Stàlaich PythonGateway v0.8+ (feumar a-mhàin isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Ùraich an còd ObjectScript bhon stòr.
  4. Ruith do ##class(isc.py.util.Jupyter).Install() agus lean na molaidhean.

Sgrìobhainnean.

toraidhean

Is e seata innealan a th’ ann am MLToolkit a tha ag amas air modalan agus àrainneachd gnìomhachd a chur còmhla gus am bi e furasta na modalan togte a chleachdadh gu dìreach anns na pròiseasan gnìomhachais agad. Tha Python Gateway mar phàirt de MLToolkit agus a’ toirt seachad aonachadh leis a’ chànan Python, a’ toirt cothrom dhut algorithms ionnsachadh inneal sam bith a chaidh a chruthachadh ann am Python (am prìomh àrainneachd airson mòran de luchd-saidheans dàta) a chuir air dòigh), grunn leabharlannan deiseil a chleachdadh gus AI / anailis robotach atharrachail a chruthachadh gu luath. Fuasglaidhean ML air àrd-ùrlar InterSystems IRIS.

iomraidhean

MLToolkit

Tha am buidheann luchd-cleachdaidh MLToolkit na ionad-tasgaidh prìobhaideach GitHub a chaidh a chruthachadh mar phàirt de bhuidheann corporra InterSystems GitHub. Tha e airson luchd-cleachdaidh bhon taobh a-muigh a bhios a’ stàladh, ag ionnsachadh, no a’ cleachdadh co-phàirtean MLToolkit mu thràth, a’ toirt a-steach Geata Python. Tha grunn chùisean gnìomhaichte aig a’ bhuidheann (le còd stòr agus dàta deuchainn) ann an raointean margaidheachd, saothrachadh, cungaidh-leigheis agus mòran ghnìomhachasan eile. Airson ballrachd a thoirt do Bhuidheann Luchd-cleachdaidh ML Toolkit, feuch an cuir thu post-d goirid chun t-seòladh a leanas: [post-d fo dhìon] agus cuir a-steach am fiosrachadh a leanas nad litir:

  • Ainm-cleachdaidh GitHub
  • Eagrachadh (tha thu ag obair no ag ionnsachadh)
  • Dreuchd (an fhìor shuidheachadh agad sa bhuidheann agad, an dàrna cuid “Oileanach” no “Neo-eisimeileach”).
  • dùthaich

Dhaibhsan a tha air an artaigil a leughadh agus aig a bheil ùidh ann an comasan InterSystems IRIS mar àrd-ùrlar airson a bhith a’ leasachadh no a’ toirt aoigheachd do inntleachd fuadain agus einnseanan ionnsachaidh innealan, tha sinn a’ toirt cuireadh dhut beachdachadh air suidheachaidhean a dh’ fhaodadh a bhith inntinneach don iomairt agad. Bidh sinn toilichte mion-sgrùdadh a dhèanamh air feumalachdan a’ chompanaidh agad agus plana gnìomh a cho-dhùnadh; Cuir fios gu seòladh puist-d ar sgioba eòlaichean AI/ML - [post-d fo dhìon].

Source: www.habr.com

Cuir beachd ann