Python vārteja programmā InterSystems IRIS

Å is raksts ir par Python Gateway, atklātā pirmkoda kopienas projektu InterSystems IRIS datu platformai. Å is projekts ļauj organizēt jebkuru Python (daudzu datu zinātnieku galvenā vide) izveidotos maŔīnmācÄ«Å”anās algoritmus, izmantot daudzas gatavas bibliotēkas, lai InterSystems IRIS platformā ātri izveidotu adaptÄ«vus, robotizētus analÄ«tiskos AI/ML risinājumus. Å ajā rakstā es parādÄ«Å”u, kā InterSystems IRIS var organizēt procesus Python, efektÄ«vi sazināties ar divvirzienu datiem un izveidot viedus biznesa procesus.

Plāns

  1. Ievads.
  2. RÄ«ki.
  3. UzstādīŔana.
  4. API.
  5. Sadarbspēja.
  6. Jupyter piezīmju grāmatiņa.
  7. Secinājumi.
  8. Saites.
  9. MLTrīku komplekts.

Ievads

Python ir augsta lÄ«meņa, vispārējas nozÄ«mes programmÄ“Å”anas valoda, kuras mērÄ·is ir uzlabot izstrādātāju produktivitāti un koda lasāmÄ«bu. Å ajā rakstu sērijā es apspriedÄ«Å”u Python izmantoÅ”anas iespējas InterSystems IRIS platformā, galveno uzmanÄ«bu pievērÅ”ot Python kā valodas izmantoÅ”anai maŔīnmācÄ«Å”anās modeļu izveidei un palaiÅ”anai.

MaŔīnmācÄ«ba (ML) ir mākslÄ«gā intelekta metožu klase, kuras raksturÄ«ga iezÄ«me ir nevis tieÅ”s problēmas risinājums, bet gan mācÄ«Å”anās daudzu lÄ«dzÄ«gu problēmu risināŔanas procesā.

MaŔīnmācÄ«Å”anās algoritmi un modeļi kļūst arvien izplatÄ«tāki. Tam ir daudz iemeslu, taču tas viss ir saistÄ«ts ar pieejamÄ«bu, vienkārŔību un praktisku rezultātu sasniegÅ”anu. Vai klasteru veidoÅ”ana vai pat neironu tÄ«klu modelÄ“Å”ana ir jauna tehnoloÄ£ija?

Protams, nē, taču mÅ«sdienās nav jāraksta simtiem tÅ«kstoÅ”u koda rindiņu, lai palaistu vienu modeli, un modeļu izveides un izmantoÅ”anas izmaksas kļūst arvien mazākas.

RÄ«ki attÄ«stās ā€” lai gan mums nav pilnÄ«bā uz GUI orientētu AI/ML rÄ«ku, progress, ko esam redzējuÅ”i daudzās citās informācijas sistēmu klasēs, piemēram, BI (no koda rakstÄ«Å”anas lÄ«dz ietvaru un uz GUI orientētu konfigurējamu risinājumu izmantoÅ”anai) novērots arÄ« AI/ML izveides rÄ«kos. Mēs jau esam izturējuÅ”i koda rakstÄ«Å”anas posmu, un Å”odien modeļu veidoÅ”anai un apmācÄ«bai izmantojam ietvarus.

ArÄ« citi uzlabojumi, piemēram, iespēja izplatÄ«t iepriekÅ” apmācÄ«tu modeli, kur gala lietotājam vienkārÅ”i jāpabeidz modeļa apmācÄ«ba, izmantojot savus specifiskos datus, arÄ« atvieglo maŔīnmācÄ«bas sākÅ”anu. Å ie sasniegumi padara maŔīnmācÄ«Å”anos daudz vienkārŔāku gan profesionāļiem, gan uzņēmumiem kopumā.

No otras puses, mēs apkopojam arvien vairāk datu. Izmantojot vienotu datu platformu, piemēram, InterSystems IRIS, visu Å”o informāciju var nekavējoties sagatavot un izmantot kā ievadi maŔīnmācÄ«Å”anās modeļos.

Pārejot uz mākoni, AI/ML projektu uzsākÅ”ana kļūst vienkārŔāka nekā jebkad agrāk. Mēs varam patērēt tikai nepiecieÅ”amos resursus. Turklāt, pateicoties mākoņu platformu piedāvātajai paralēlizācijai, mēs varam ietaupÄ«t laiku.

Bet kā ar rezultātiem? Å eit lietas kļūst sarežģītākas. Modeļu veidoÅ”anai ir daudz rÄ«ku, par kuriem es runāŔu tālāk. Laba modeļa izveidoÅ”ana nav vienkārÅ”a, bet ko darÄ«t tālāk? Peļņas gÅ«Å”ana no biznesa modeļa izmantoÅ”anas arÄ« ir nenozÄ«mÄ«gs uzdevums. Problēmas pamatā ir analÄ«tisko un transakciju darba slodzes un datu modeļu nodalÄ«Å”ana. Kad mēs apmācām modeli, mēs to parasti darām, pamatojoties uz vēsturiskiem datiem. Taču vieta konstruētajam modelim ir darÄ«jumu datu apstrādē. Kāds labums no labākā krāpniecisko darÄ«jumu noteikÅ”anas modeļa, ja mēs to palaižam reizi dienā? Krāpnieki jau sen aizbraukuÅ”i ar naudu. Mums ir jāapmāca modelis uz vēsturiskiem datiem, taču mums tas ir arÄ« jāpiemēro reāllaikā jauniem ienākoÅ”ajiem datiem, lai mÅ«su biznesa procesi varētu darboties saskaņā ar modeļa prognozēm.

ML Toolkit ir rÄ«ku komplekts, kura mērÄ·is ir tieÅ”i tas: apvienot modeļus un darÄ«jumu vidi, lai izveidotos modeļus varētu viegli izmantot tieÅ”i jÅ«su biznesa procesos. Python Gateway ir daļa no ML rÄ«kkopas un nodroÅ”ina integrāciju ar Python valodu (lÄ«dzÄ«gi tam, kā R Gateway, kas ir daļa no ML Toolkit, nodroÅ”ina integrāciju ar R valodu).

RÄ«kkopa

Pirms turpinām, es vēlos aprakstīt dažus Python rīkus un bibliotēkas, kuras izmantosim vēlāk.

Tehnoloģija

  • Python ir interpretēta, augsta lÄ«meņa, vispārējas nozÄ«mes programmÄ“Å”anas valoda. Valodas galvenā priekÅ”rocÄ«ba ir tās lielā matemātikas, ML un AI bibliotēku bibliotēka. Tāpat kā ObjectScript, tā ir uz objektu orientēta valoda, taču viss ir definēts dinamiski, nevis statiski. ArÄ« viss ir objekts. Vēlākajos rakstos tiek pieņemts, ka valodu pārzina Ä«slaicÄ«gi. Ja vēlaties sākt mācÄ«ties, iesaku sākt ar dokumentācija.
  • MÅ«su turpmākajiem vingrinājumiem iestatiet Python 3.6.7 64 biti.
  • IDE: Es izmantoju PyCharm, bet kopumā viņi Š¼Š½Š¾Š³Š¾. Ja izmantojat Atelier, Python izstrādātājiem ir pieejams Eclipse spraudnis. Ja izmantojat VS kodu, Python ir paplaÅ”inājums.
  • PiezÄ«mju grāmatiņa: IDE vietā varat rakstÄ«t un kopÄ«got savus skriptus tieÅ”saistes piezÄ«mju grāmatiņās. Populārākais no tiem ir Jupters.

Bibliotēkas

Å eit ir (nepilnÄ«gs) maŔīnmācÄ«Å”anās bibliotēku saraksts:

  • BezjēdzÄ«gs ā€” pamatpakete precÄ«ziem aprēķiniem.
  • Pandas ā€” augstas veiktspējas datu struktÅ«ras un datu analÄ«zes rÄ«ki.
  • matplotlib ā€” grafiku veidoÅ”ana.
  • JÅ«ras rags ā€” datu vizualizācija, kuras pamatā ir matplotlib.
  • Sklearn ā€” maŔīnmācÄ«Å”anās metodes.
  • XGBoost ā€” maŔīnmācÄ«Å”anās algoritmi gradienta pastiprināŔanas metodoloÄ£ijas ietvaros.
  • Gensim - NLP.
  • Keras - neironu tÄ«kli.
  • tenzora plÅ«sma ā€” platforma maŔīnmācÄ«Å”anās modeļu izveidei.
  • PyTorch ir platforma maŔīnmācÄ«Å”anās modeļu izveidei, kas vērsta uz Python.
  • Nyoka - PMML no dažādiem modeļiem.

AI/ML tehnoloÄ£ijas padara uzņēmējdarbÄ«bu efektÄ«vāku un pielāgojamāku. Turklāt mÅ«sdienās Ŕīs tehnoloÄ£ijas kļūst vieglāk izstrādājamas un ievieÅ”amas. Sāciet mācÄ«ties par AI/ML tehnoloÄ£ijām un to, kā tās var palÄ«dzēt jÅ«su organizācijai augt.

UzstādīŔana

Ir vairāki veidi, kā instalēt un izmantot Python Gateway:

  • OS
    • Windows
    • Linux
    • magone
  • dokers
    • Izmantojiet attēlu no DockerHub
    • Izveidojiet savu izskatu

NeatkarÄ«gi no instalÄ“Å”anas metodes jums bÅ«s nepiecieÅ”ams avota kods. VienÄ«gā vieta, kur lejupielādēt kodu ir izlaidumu lapa. Tajā ir pārbaudÄ«ti stabili laidieni, vienkārÅ”i izmantojiet jaunāko. Å obrÄ«d ir 0.8, bet ar laiku bÅ«s jaunas. Neklonējiet/lejupielādējiet repozitoriju, lejupielādējiet jaunāko versiju.

OS

Ja instalējat Python Gateway operētājsistēmā, vispirms (neatkarÄ«gi no operētājsistēmas) ir jāinstalē Python. PriekÅ” Ŕī:

  1. Instalējiet Python 3.6.7 64 bitu versiju. Python ieteicams instalēt noklusējuma direktorijā.
  2. Instalējiet moduli dill: pip install dill.
  3. Lejupielādējiet ObjectScript kodu (t.i. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) uz jebkuru apgabalu ar produktiem. Ja vēlaties, lai esoÅ”s apgabals atbalstÄ«tu produktus, palaidiet: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Vieta norāde DLL/SO/DYLIB uz mapi bin jūsu InterSystems IRIS instancē. Bibliotēkas failam ir jābūt pieejamam atgrieztajā ceļā write ##class(isc.py.Callout).GetLib().

Windows

  1. Pārliecinieties, vai vides mainīgais PYTHONHOME norāda uz Python 3.6.7.
  2. Pārliecinieties, vai sistēmas vides mainīgais ir PATH satur mainīgo PYTHONHOME (vai direktoriju, uz kuru tas norāda).

Linux (Debian/Ubuntu)

  1. Pārbaudiet, vai vides mainÄ«gais ir PATH satur /usr/lib Šø /usr/lib/x86_64-linux-gnu. Izmantot failu /etc/environment lai iestatÄ«tu vides mainÄ«gos.
  2. Kļūdu gadÄ«jumā undefined symbol: _Py_TrueStruct iestatiet iestatÄ«jumu PythonLib. arÄ« iekŔā Readme ir sadaļa TraucējummeklÄ“Å”ana.

magone

  1. PaŔlaik tiek atbalstīta tikai Python 3.6.7 python.org. Pārbaudiet mainīgo PATH.

Ja mainījāt vides mainīgos, restartējiet InterSystems produktu.

dokers

Konteineru izmantoŔanai ir vairākas priekŔrocības:

  • PārnesamÄ«ba
  • Efektivitāte
  • Izolācija
  • Vieglums
  • NemainÄ«ba

Apskatiet Å”o rakstu sērija lai iegÅ«tu papildinformāciju par Docker lietoÅ”anu ar InterSystems produktiem.

Visas Python Gateway versijas paŔlaik ir balstītas uz konteineriem 2019.4.

Gatavs attēls

Palaist: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestlai lejupielādētu un palaistu Python Gateway ar InterSystems IRIS Community Edition. Tas ir viss.

Izveidojiet savu izskatu

Lai izveidotu doka attēlu, palaidiet repozitorija saknē: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Pēc noklusējuma attēls tiek veidots, pamatojoties uz attēlu store/intersystems/iris-community:2019.4.0.383.0, tomēr varat to mainīt, iestatot mainīgo IMAGE.
Lai izveidotu no InterSystems IRIS, palaidiet: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest.

Pēc tam varat palaist docker attēlu:

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

Ja izmantojat attēlu, kura pamatā ir InterSystems IRIS Community Edition, varat izlaist atslēgu.

Komentāri

  • Pārbaudes process isc.py.test.Process saglabā vairākus attēlus pagaidu direktorijā. Iespējams, vēlēsities mainÄ«t Å”o ceļu uz pievienoto direktoriju. Lai to izdarÄ«tu, rediģējiet iestatÄ«jumu WorkingDir norādot pievienoto direktoriju.
  • Lai piekļūtu termināļa palaiÅ”anai: docker exec -it irispy sh.
  • Piekļūstiet sistēmas pārvaldÄ«bas portālam, piesakoties SuperUser/SYS.
  • Lai apturētu konteineru, palaidiet: docker stop irispy && docker rm --force irispy.

Instalācijas pārbaude

Kad esat instalējis Python Gateway, ir vērts pārbaudÄ«t, vai tā darbojas. Izpildiet Å”o kodu InterSystems IRIS terminālÄ«:

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

Rezultātam jābÅ«t: HELLO ā€” Python mainÄ«gā vērtÄ«ba x. Ja atgrieÅ”anās statuss sc ir kļūda vai var tukÅ”s, pārbaudiet Readme ā€” TraucējummeklÄ“Å”anas sadaļa.

API

Python Gateway ir instalēta, un jūs esat pārbaudījis, vai tas darbojas. Ir pienācis laiks sākt to lietot!
Galvenais Python interfeiss ir isc.py.Main. Tā piedāvā Ŕādas metožu grupas (visas atgriež %Status):

  • Koda izpilde
  • Datu pārsÅ«tÄ«Å”ana
  • Papildu

Koda izpilde

Šīs metodes ļauj izpildīt patvaļīgu Python kodu.

VienkārŔā virkne

SimpleString - Ŕī ir galvenā metode. NepiecieÅ”ami 4 izvēles argumenti:

  • code ā€” izpildāmā koda rinda. Rindas plÅ«smas raksturs: $c(10).
  • returnVariable ā€” atgriežamā mainÄ«gā nosaukums.
  • serialization - kā serializēt returnVariable. 0 ā€” virkne (noklusējums), 1 ā€” atkārtojums.
  • result ā€” ByRef atsauce uz mainÄ«go, kurā tiek ierakstÄ«ta vērtÄ«ba returnVariable.

IepriekÅ” mēs darÄ«jām:

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

Å ajā piemērā mēs pieŔķiram Python mainÄ«gajam x vērtÄ«ba Hello un vēlaties atgriezt Python mainÄ«gā vērtÄ«bu x uz ObjectScript mainÄ«go var.

ExecuteCode

ExecuteCode ir droŔāka un mazāk ierobežojoŔa alternatīva SimpleString.
InterSystems IRIS platformas rindiņas ir ierobežotas lÄ«dz 3 641 144 rakstzÄ«mēm, un, ja vēlaties izpildÄ«t garāku koda daļu, ir jāizmanto pavedieni.
Tiek pieņemti divi argumenti:

  • code ā€” izpildāmā Python koda rinda vai straume.
  • variable ā€” (pēc izvēles) pieŔķir izpildes rezultātu code Å”is Python mainÄ«gais.

Piemērs lietoÅ”anai:

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

Šajā piemērā mēs reizinām 2 ar 3 un ierakstām rezultātu Python mainīgajā y.

Datu pārsūtīŔana

Pārsūtiet datus uz un no Python.

Python -> InterSystems IRIS

Ir 4 veidi, kā iegūt Python mainīgā vērtību programmā InterSystems IRIS atkarībā no vajadzīgās serializācijas:

  • String vienkārÅ”iem datu tipiem un atkļūdoÅ”anai.
  • Repr vienkārÅ”u objektu glabāŔanai un atkļūdoÅ”anai.
  • JSON ērtai datu apstrādei InterSystems IRIS pusē.
  • Pickle lai saglabātu objektus.

Šīs metodes ļauj izgūt mainīgos no Python kā virkni vai straumes.

  • GetVariable(variable, serialization, .stream, useString) - gÅ«t serialization mainÄ«gais variable Š² stream. Ja useString ir 1, un serializācija tiek ievietota virknē, tad tiek atgriezta virkne, nevis straume.
  • GetVariableJson(variable, .stream, useString) ā€” iegÅ«stiet mainÄ«gā JSON serializāciju.
  • GetVariablePickle(variable, .stream, useString, useDill) -Saņemiet Pickle (vai Dill) mainÄ«gā serializāciju.

Mēģināsim iegūt mūsu mainīgo y.

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

InterSystems IRIS -> Python

Notiek datu ielāde no InterSystems IRIS programmā Python.

  • ExecuteQuery(query, variable, type, namespace) - izveido datu kopu (pandas dataframe vai list) no sql vaicājuma un iestata to uz Python mainÄ«go variable. Plastmasas maisiņŔ isc.py jābÅ«t pieejamam apgabalā namespace ā€” tur tiks izpildÄ«ts pieprasÄ«jums.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - ielādē globālos datus global no apakÅ”indeksa start lÄ«dz end Python kā tipa mainÄ«gais type: list, vai pandas dataframe. Neobligāto argumentu apraksts mask un labels pieejams klases dokumentācijā un repozitorijā Datu pārsÅ«tÄ«Å”anas dokumenti.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - ielādē klases datus class no id start lÄ«dz end Python kā tipa mainÄ«gais type: list, vai pandas dataframe. properties ā€” to klases Ä«paŔību saraksts (atdalot ar komatu), kas jāielādē datu kopā. AtbalstÄ«tas maskas * Šø ?. Noklusējums ā€” * (visi Ä«paÅ”umi). ÄŖpaÅ”ums %%CLASSNAME ignorēts.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - ielādē tabulas datus table no id start lÄ«dz end programmā Python.

ExecuteQuery ā€” universāls (jebkurÅ” pareizais SQL vaicājums tiks nodots Python). tomēr ExecuteGlobal un tā ietinēji ExecuteClass Šø ExecuteTable strādāt ar vairākiem ierobežojumiem. Tie ir daudz ātrāki (3-5 reizes ātrāki nekā ODBC draiveris un 20 reizes ātrāki ExecuteQuery). Vairāk informācijas plkst Datu pārsÅ«tÄ«Å”anas dokumenti.
Visas Ŕīs metodes atbalsta datu pārsÅ«tÄ«Å”anu no jebkuras vietas. Plastmasas maisiņŔ isc.py jābÅ«t pieejamam mērÄ·a apgabalā.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) ā€” jebkura pareiza SQL vaicājuma rezultātu pārsÅ«tÄ«Å”ana uz Python. Å Ä« ir lēnākā datu pārsÅ«tÄ«Å”anas metode. Izmantojiet to, ja ExecuteGlobal un tā iesaiņojumi nav pieejami.

Argumenti:

  • query - sql vaicājums.
  • variable ā€” Python mainÄ«gā nosaukums, kurā tiek ierakstÄ«ti dati.
  • type Sākot no list vai Pandas dataframe.
  • namespace ā€” apgabals, kurā pieprasÄ«jums tiks izpildÄ«ts.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - globālā nokārtoŔana Python.

Argumenti:

  • global - globālais nosaukums bez ^
  • variable ā€” Python mainÄ«gā nosaukums, kurā tiek ierakstÄ«ti dati.
  • type Sākot no list vai Pandas dataframe.
  • start ā€” pirmais globālā indeksa indekss. Obligāti %Integer.
  • end ā€” globālā pēdējais indekss. Obligāti %Integer.
  • mask ā€” globālo vērtÄ«bu maska. Maska var bÅ«t Ä«sāka nekā globālā lauku skaits (tādā gadÄ«jumā lauki beigās tiks izlaisti). Kā formatēt masku:
    • + nodot vērtÄ«bu tādu, kāda tā ir.
    • - izlaist vērtÄ«bu.
    • b ā€” BÅ«la tips (0 Sākot no False, viss pārējais - True).
    • d ā€” Datums (no $horolog, operētājsistēmā Windows no 1970. gada, operētājsistēmā Linux no 1900. gada).
    • t ā€” Laiks ($horolog, sekundes pēc pusnakts).
    • m ā€” Laikspiedols (formāta virkne YEAR-MONTH-DAY STUNDA:MINUTE:SECOND).
  • labels ā€” %Sleju nosaukumu saraksts. Pirmais elements ir apakÅ”indeksa nosaukums.
  • namespace ā€” apgabals, kurā pieprasÄ«jums tiks izpildÄ«ts.

ExecuteClass

Aptiniet pāri ExecuteGlobal. Pamatojoties uz klases definīciju, sagatavo zvanu ExecuteGlobal un zvana viņam.

ExecuteClass(class, variable, type, start, end, properties, namespace) - klases datu nodoŔana Python.

Argumenti:

  • class - klases nosaukums
  • variable ā€” Python mainÄ«gā nosaukums, kurā tiek ierakstÄ«ti dati.
  • type Sākot no list vai Pandas dataframe.
  • start ā€” sākuma ID.
  • end ā€” galÄ«gais ID
  • properties ā€” to klases Ä«paŔību saraksts (atdalot ar komatu), kas jāielādē datu kopā. AtbalstÄ«tas maskas * Šø ?. Noklusējums ā€” * (visi Ä«paÅ”umi). ÄŖpaÅ”ums %%CLASSNAME ignorēts.
  • namespace ā€” apgabals, kurā pieprasÄ«jums tiks izpildÄ«ts.

Visi rekvizÄ«ti tiek nodoti tādi, kādi tie ir, izņemot tipa rekvizÄ«tus %Date, %Time, %Boolean Šø %TimeStamp - tie tiek pārvērsti attiecÄ«gajās Python klasēs.

Izpildīt tabulu

Aptiniet pāri ExecuteClass. PārvērÅ” tabulas nosaukumu klases nosaukumā un izsauc ExecuteClass. Paraksts:

ExecuteTable(table, variable, type, start, end, properties, namespace) - tabulas datu nodoŔana Python.

Argumenti:

  • table - tabulas nosaukums.
    Visi pārējie argumenti tiek pieņemti tā, kā tas ir ExecuteClass.

Piezīmes

  • ExecuteGlobal, ExecuteClass Šø ExecuteTable strādāt vienlÄ«dz ātri.
  • ExecuteGlobal 20 reizes ātrāk nekā ExecuteQuery uz lielām datu kopām (pārsÅ«tÄ«Å”anas laiks > 0.01 sekunde).
  • ExecuteGlobal, ExecuteClass Šø ExecuteTable strādāt pie globālajiem elementiem ar Ŕādu struktÅ«ru: ^global(key) = $lb(prop1, prop2, ..., propN) kur key ā€” vesels skaitlis.
  • Par ExecuteGlobal, ExecuteClass Šø ExecuteTable atbalstÄ«to vērtÄ«bu diapazonu %Date atbilst diapazonam mktime un atkarÄ«gs no OS (logi: 1970-01-01, Linux 1900-01-01, mac). Izmantot %TimeStamplai pārsÅ«tÄ«tu datus ārpus Ŕī diapazona vai izmantotu pandas datu rāmi, jo Å”is ir tikai saraksta ierobežojums.
  • Par ExecuteGlobal, ExecuteClass Šø ExecuteTable visi argumenti, izņemot datu avotu (globālo, klasi vai tabulu) un mainÄ«go, nav obligāti.

piemēri

Pārbaudes klase isc.py.test.Person satur metodi, kas parāda visas datu pārsÅ«tÄ«Å”anas iespējas:

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)

Izsauciet metodi do ##class(isc.py.test.Person).Test() lai redzētu, kā darbojas visas datu pārsÅ«tÄ«Å”anas metodes.

Palīdzības metodes

  • GetVariableInfo(variable, serialization, .defined, .type, .length) ā€” iegÅ«t informāciju par mainÄ«go: vai tas ir definēts, tā klasi un serializācijas garumu.
  • GetVariableDefined(variable, .defined) ā€” vai mainÄ«gais ir definēts.
  • GetVariableType(variable, .type) ā€” iegÅ«stiet mainÄ«gā klasi.
  • GetStatus() - iegÅ«stiet un noņemiet pēdējo izņēmumu Python pusē.
  • GetModuleInfo(module, .imported, .alias) ā€” iegÅ«t moduļa mainÄ«go un importa statusu.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) ā€” iegÅ«t informāciju par funkciju.

Savietojamība

Jūs esat iemācījies izsaukt Python Gateway no termināļa, tagad sāksim to izmantot ražoŔanā. Pamats mijiedarbībai ar Python Ŕajā režīmā ir isc.py.ens.Operation. Tas ļauj mums:

  • IzpildÄ«t kodu Python
  • Saglabāt/atjaunot Python kontekstu
  • Ielādējiet un saņemiet datus no Python

BÅ«tÄ«bā Python darbÄ«ba ir iesaiņojums isc.py.Main. DarbÄ«ba isc.py.ens.Operation nodroÅ”ina iespēju mijiedarboties ar Python procesu no InterSystems IRIS produktiem. Tiek atbalstÄ«ti pieci vaicājumi:

  • isc.py.msg.ExecutionRequest lai izpildÄ«tu Python kodu. Atgriežas isc.py.msg.ExecutionResponse ar izpildes rezultātu un pieprasÄ«to mainÄ«go vērtÄ«bām.
  • isc.py.msg.StreamExecutionRequest lai izpildÄ«tu Python kodu. Atgriežas isc.py.msg.StreamExecutionResponse izpildes rezultāts un pieprasÄ«to mainÄ«go vērtÄ«bas. Analogs isc.py.msg.ExecutionRequest, bet pieņem un atgriež straumes, nevis virknes.
  • isc.py.msg.QueryRequest lai pārsÅ«tÄ«tu SQL vaicājuma izpildes rezultātu. Atgriežas Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest globālo/klases/tabulas datu nodoÅ”anai. Atgriežas Ens.Response.
  • isc.py.msg.SaveRequest lai saglabātu Python kontekstu. Atgriežas Ens.StringResponse ar konteksta ID.
  • isc.py.msg.RestoreRequest lai atjaunotu Python kontekstu.

    Bez tam, isc.py.ens.Operation ir divi iestatījumi:

    • Initializer ā€” klases izvēle, kas ievieÅ” saskarni isc.py.init.Abstract. To var izmantot, lai ielādētu funkcijas, moduļus, klases utt. Tas tiek izpildÄ«ts vienu reizi, kad process sākas.
    • PythonLib - (tikai Linux), ja ielādes laikā redzat kļūdas, iestatiet tā vērtÄ«bu uz libpython3.6m.so vai pat pilnā ceļā uz Python bibliotēku.

Biznesa procesu izveide

Ir pieejamas divas klases, kas atvieglo biznesa procesu attīstību:

  • isc.py.ens.ProcessUtils ļauj iegÅ«t anotācijas no darbÄ«bām ar mainÄ«go aizstāŔanu.
  • isc.py.util.BPEmulator ļauj viegli pārbaudÄ«t biznesa procesus ar Python. Tas var izpildÄ«t biznesa procesu (Python daļas) paÅ”reizējā procesā.

Mainīgā aizstāŔana

Visi biznesa procesi ir mantoti no isc.py.ens.ProcessUtils, var izmantot metodi GetAnnotation(name) lai iegÅ«tu aktivitātes anotācijas vērtÄ«bu pēc tās nosaukuma. DarbÄ«bas anotācijā var bÅ«t mainÄ«gie, kas tiks aprēķināti InterSystems IRIS pusē, pirms tie tiks nodoti Python. Å eit ir sintakse mainÄ«go aizstāŔanai:

  • ${class:method:arg1:...:argN} - metodes izsaukums
  • #{expr} ā€” izpildÄ«t kodu ObjectScript valodā.

Piemērs ir pieejams pārbaudes biznesa procesā isc.py.test.Process, piemēram, darbībā Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Šajā piemērā:

  • #{process.WorkDirectory} atgriež objekta WorkDirectory rekvizÄ«tu process, kas ir klases gadÄ«jums isc.py.test.Process tie. paÅ”reizējais biznesa process.
  • ${%PopulateUtils:Integer:1:100} sauc metodi Integer klase %PopulateUtils, garāmejoÅ”i argumenti 1 Šø 100, atgriežot nejauÅ”u veselu skaitli diapazonā 1...100.

Pārbaudi biznesa procesu

Testa produkti un testa biznesa procesi pēc noklusējuma ir pieejami kā daļa no Python Gateway. Lai tos izmantotu:

  1. OS terminālī palaidiet: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS terminālī palaidiet: do ##class(isc.py.test.CannibalizationData).Import() lai aizpildītu testa datus.
  3. Izlaist produktus isc.py.test.Production.
  4. SÅ«tÄ«t pieprasÄ«juma veids Ens.Request Š² isc.py.test.Process.

Apskatīsim, kā tas viss darbojas kopā. Atvērt isc.py.test.Process BPL redaktorā:

Python vārteja programmā InterSystems IRIS

Koda izpilde

Vissvarīgākais izaicinājums ir Python koda izpilde:

Python vārteja programmā InterSystems IRIS

Vaicājums izmantots isc.py.msg.ExecutionRequest, Ŕeit ir tās īpaŔības:

  • Code - Python kods.
  • SeparateLines ā€” vai sadalÄ«t kodu rindās izpildei. $c(10) (n) tiek izmantots, lai atdalÄ«tu virknes. LÅ«dzu, ņemiet vērā, ka NAV ieteicams apstrādāt visu ziņojumu uzreiz, Ŕī funkcija ir paredzēta tikai apstrādei def un lÄ«dzÄ«gas daudzrindu izteiksmes. Noklusējums 0.
  • Variables ā€” ar komatu atdalÄ«tu mainÄ«go lielumu saraksts, kas tiks pievienoti atbildei.
  • Serialization ā€” Kā serializēt mainÄ«gos, kurus vēlamies atgriezt. Iespējas: Str, Repr, JSON, Pickle Šø Dill, noklusējuma Str.

MÅ«su gadÄ«jumā mēs nosakām tikai Ä«paÅ”umu Code, tāpēc visi pārējie rekvizÄ«ti izmanto noklusējuma vērtÄ«bas. IestatÄ«jām zvanot process.GetAnnotation("Import pandas"), kas izpildes laikā atgriež anotāciju pēc mainÄ«gā aizstāŔanas. Galu galā, kods import pandas as pd tiks nodots Python. GetAnnotation var bÅ«t noderÄ«ga vairāku rindu Python skriptu iegÅ«Å”anai, taču Å”ai koda iegÅ«Å”anas metodei nav ierobežojumu. Varat iestatÄ«t Ä«paÅ”umu Code jebkurā jums ērtā veidā.

Mainīgo iegūŔana

Vēl viens interesants izaicinājums, izmantojot isc.py.msg.ExecutionRequest Sākot no Correlation Matrix: Tabular:

Python vārteja programmā InterSystems IRIS

Tas aprēķina korelācijas matricu Python pusē un izņem mainīgo corrmat atpakaļ uz InterSystems IRIS JSON formātā, iestatot pieprasījuma rekvizītus:

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

Rezultātus varam redzēt programmā Visual Trace:

Python vārteja programmā InterSystems IRIS

Un, ja mums ir nepiecieÅ”ama Ŕī vērtÄ«ba BP, mēs to varam iegÅ«t Ŕādi: callresponse.Variables.GetAt("corrmat").

Datu pārsūtīŔana

Tālāk parunāsim par datu pārsūtīŔanu no InterSystems IRIS uz Python; visi datu pārsūtīŔanas pieprasījumi īsteno saskarni isc.py.msg.DataRequestkas nodroŔina Ŕādas īpaŔības:

  • Variable ā€” Python mainÄ«gais, kurā tiek ierakstÄ«ti dati.
  • Type ā€” mainÄ«gais tips: dataframe (pandas datu rāmis) vai list.
  • Namespace ā€” apgabals, no kura mēs saņemam datus. Plastmasas maisiņŔ isc.py jābÅ«t pieejamam Å”ajā jomā. Tas var bÅ«t apgabals bez produktu atbalsta.

Pamatojoties uz Ŕo saskarni, tiek ieviestas 4 pieprasījumu klases:

  • isc.py.msg.QueryRequest - iestatÄ«t Ä«paÅ”umu Query lai nosÅ«tÄ«tu SQL vaicājumu.
  • isc.py.msg.ClassRequest - iestatÄ«t Ä«paÅ”umu Class lai nodotu klases datus.
  • isc.py.msg.TableRequest - iestatÄ«t Ä«paÅ”umu Table lai pārsÅ«tÄ«tu tabulas datus.
  • isc.py.msg.GlobalRequest - iestatÄ«t Ä«paÅ”umu Global globālai datu pārsÅ«tÄ«Å”anai.

Pārbaudes procesā apskatiet darbību RAWKur isc.py.msg.QueryRequest parādīts darbībā.

Python vārteja programmā InterSystems IRIS

Python konteksta saglabāŔana/atjaunoŔana

Visbeidzot, mēs varam saglabāt Python kontekstu programmā InterSystems IRIS, lai to izdarītu, mēs to nosūtīsim isc.py.msg.SaveRequest ar argumentiem:

  • Mask ā€” Tiek saglabāti tikai tie mainÄ«gie, kas atbilst maskai. AtbalstÄ«ts * Šø ?. Piemērs: "Data*, Figure?"... Noklusējuma *.
  • MaxLength ā€” saglabātā mainÄ«gā lieluma maksimālais garums. Ja mainÄ«gā serializācija ir garāka, tas tiks ignorēts. Iestatiet uz 0, lai iegÅ«tu jebkura garuma mainÄ«gos. Noklusējums $$$MaxStringLength.
  • Name ā€” konteksta nosaukums (pēc izvēles).
  • Description ā€” Konteksta apraksts (pēc izvēles).

Atgriežas Ens.StringResponse с Id saglabāts konteksts. Pārbaudes procesā apskatiet darbÄ«bu Save Context.

Saistīts pieprasījums isc.py.msg.RestoreRequest ielādē kontekstu no InterSystems IRIS programmā Python:

  • ContextId ā€” konteksta identifikators.
  • Clear ā€” pirms atjaunoÅ”anas notÄ«riet kontekstu.

Jupyter piezīmju grāmatiņa

Jupyter piezÄ«mju grāmatiņa ir atvērtā pirmkoda tÄ«mekļa lietojumprogramma, kas ļauj izveidot un publicēt piezÄ«mju grāmatiņas, kurās ir kods, vizualizācijas un teksts. Python Gateway ļauj skatÄ«t un rediģēt BPL procesus Jupyter piezÄ«mjdatora veidā. LÅ«dzu, ņemiet vērā, ka paÅ”laik tiek izmantots parastais Python 3 izpildÄ«tājs.

Å is paplaÅ”inājums pieņem, ka anotācijās ir ietverts Python kods, un kā iepriekŔējie nosaukumi tiek izmantoti darbÄ«bu nosaukumi. Tagad ir iespējams izstrādāt PythonGateway biznesa procesus Jupyter piezÄ«mjdatorā. Tālāk ir norādÄ«ts, kas ir iespējams.

  • Izveidojiet jaunus biznesa procesus
  • Dzēst biznesa procesus
  • Izveidojiet jaunas aktivitātes
  • Mainiet aktivitātes
  • Dzēst aktivitātes

Å”eit ir demo video. Un daži ekrānuzņēmumi:

Process Explorer

Python vārteja programmā InterSystems IRIS

Procesu redaktors

Python vārteja programmā InterSystems IRIS

UzstādīŔana

  1. Jums būs nepiecieŔams InterSystems IRIS 2019.2+.
  2. Instalējiet PythonGateway v0.8+ (nepiecieÅ”ams tikai isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints Šø isc.py.ens.ProcessUtils).
  3. Atjauniniet ObjectScript kodu no krātuves.
  4. Izpildīt do ##class(isc.py.util.Jupyter).Install() un izpildiet norādījumus.

Š”Š¾ŠŗуŠ¼ŠµŠ½Ń‚Š°Ń†Šøя.

Atzinumi

MLToolkit ir rÄ«ku komplekts, kura mērÄ·is ir apvienot modeļus un darÄ«jumu vidi, lai izveidotos modeļus varētu viegli izmantot tieÅ”i jÅ«su biznesa procesos. Python Gateway ir daļa no MLToolkit un nodroÅ”ina integrāciju ar Python valodu, ļaujot jums organizēt jebkuru Python (daudzu datu zinātnieku galvenā vide) izveidotos maŔīnmācÄ«Å”anās algoritmus, izmantot daudzas gatavas bibliotēkas, lai ātri izveidotu adaptÄ«vu, robotizētu analÄ«tisko AI / ML risinājumi InterSystems platformā IRIS.

atsauces

MLTrīku komplekts

MLToolkit lietotāju grupa ir privāta GitHub repozitorijs, kas izveidots kā daļa no InterSystems korporatÄ«vās GitHub organizācijas. Tas ir paredzēts ārējiem lietotājiem, kuri instalē, mācās vai jau izmanto MLToolkit komponentus, tostarp Python Gateway. Grupai ir vairākas ieviestas lietas (ar pirmkodu un testu datiem) mārketinga, ražoÅ”anas, medicÄ«nas un daudzu citu nozaru jomās. Lai pievienotos ML Toolkit lietotāju grupai, lÅ«dzu, nosÅ«tiet Ä«su e-pastu uz Ŕādu adresi: [e-pasts aizsargāts] un savā vēstulē iekļaujiet Ŕādu informāciju:

  • GitHub lietotājvārds
  • Organizācija (jÅ«s strādājat vai mācāties)
  • Amats (jÅ«su faktiskais amats jÅ«su organizācijā, vai nu "Students" vai "NeatkarÄ«gs").
  • Valsts

Tiem, kuri ir izlasÄ«juÅ”i rakstu un interesējas par InterSystems IRIS iespējām kā mākslÄ«gā intelekta un maŔīnmācÄ«Å”anās dzinēju izstrādes vai mitināŔanas platformu, mēs aicinām jÅ«s apspriest iespējamos scenārijus, kas interesē jÅ«su uzņēmumu. Mēs labprāt analizēsim JÅ«su uzņēmuma vajadzÄ«bas un kopÄ«gi izstrādāsim rÄ«cÄ«bas plānu; MÅ«su AI/ML ekspertu komandas saziņas e-pasta adrese ā€” [e-pasts aizsargāts].

Avots: www.habr.com

Pievieno komentāru