Python Gateway InterSystems IRIS-ում

Այս հոդվածը Python Gateway-ի մասին է, որը բաց կոդով համայնքային նախագիծ է InterSystems IRIS տվյալների պլատֆորմի համար: Այս նախագիծը թույլ է տալիս կազմակերպել Python-ում ստեղծված ցանկացած մեքենայական ուսուցման ալգորիթմ (բազմաթիվ տվյալների գիտնականների հիմնական միջավայրը), օգտագործել բազմաթիվ պատրաստի գրադարաններ InterSystems IRIS հարթակում արագորեն հարմարվողական, ռոբոտային վերլուծական AI/ML լուծումներ ստեղծելու համար: Այս հոդվածում ես ցույց կտամ, թե ինչպես է InterSystems IRIS-ը կարող է համակարգել գործընթացները Python-ում, արդյունավետ կերպով հաղորդակցել երկկողմանի տվյալներ և ստեղծել խելացի բիզնես գործընթացներ:

Պլան

  1. Ներածություն:
  2. Գործիքներ.
  3. Տեղադրում.
  4. API:
  5. Փոխգործունակություն.
  6. Jupyter Notebook.
  7. Եզրակացություններ:
  8. Հղումներ.
  9. MLToolkit.

Ներածություն

Python-ը բարձր մակարդակի, ընդհանուր նշանակության ծրագրավորման լեզու է, որն ուղղված է ծրագրավորողների արտադրողականության և կոդերի ընթեռնելիության բարելավմանը: Հոդվածների այս շարքում ես կքննարկեմ Python-ի օգտագործման հնարավորությունները InterSystems IRIS հարթակում, այս հոդվածի հիմնական ուշադրության կենտրոնում լինելով Python-ի օգտագործումը որպես մեքենայական ուսուցման մոդելներ ստեղծելու և գործարկելու լեզու:

Մեքենայական ուսուցումը (ML) արհեստական ​​ինտելեկտի մեթոդների դաս է, որի բնորոշ հատկանիշը ոչ թե խնդրի ուղղակի լուծումն է, այլ ուսուցումը բազմաթիվ նմանատիպ խնդիրների լուծման գործընթացում։

Մեքենայական ուսուցման ալգորիթմներն ու մոդելները դառնում են ավելի տարածված: Դրա պատճառները շատ են, բայց ամեն ինչ հանգում է մատչելիությանը, պարզությանը և գործնական արդյունքների հասնելուն: Կլաստերավորումը կամ նույնիսկ նեյրոնային ցանցի մոդելավորումը նոր տեխնոլոգիա է:

Իհարկե ոչ, բայց մեր օրերում մեկ մոդել գործարկելու համար հարյուր հազարավոր տող կոդ գրելու կարիք չկա, իսկ մոդելների ստեղծման և օգտագործման ծախսերը գնալով պակասում են։

Գործիքները զարգանում են. թեև մենք չունենք լիովին GUI-կենտրոն AI/ML գործիքներ, այն առաջընթացը, որը մենք տեսել ենք տեղեկատվական համակարգերի շատ այլ դասերի, ինչպիսիք են BI-ն (կոդ գրելուց մինչև շրջանակների օգտագործումը և GUI-կենտրոնացված կարգավորելի լուծումները), հետևյալն է: դիտվել է նաև AI/ML ստեղծման գործիքներում: Մենք արդեն անցել ենք կոդ գրելու փուլը և այսօր օգտագործում ենք շրջանակներ՝ մոդելներ կառուցելու և պատրաստելու համար։

Այլ բարելավումները, ինչպիսիք են նախապես պատրաստված մոդելը բաշխելու ունակությունը, որտեղ վերջնական օգտագործողը պարզապես պետք է ավարտի մոդելի ուսուցումն իր կոնկրետ տվյալների վրա, նույնպես հեշտացնում է մեքենայական ուսուցման սկիզբը: Այս առաջընթացները շատ ավելի հեշտ են դարձնում ուսուցման մեքենայական ուսուցումը ինչպես մասնագետների, այնպես էլ ընկերությունների համար ընդհանրապես:

Մյուս կողմից՝ մենք ավելի ու ավելի շատ տվյալներ ենք հավաքում։ InterSystems IRIS-ի նման միասնական տվյալների հարթակով այս ամբողջ տեղեկատվությունը կարող է անմիջապես պատրաստվել և օգտագործվել որպես մեքենայական ուսուցման մոդելների մուտքագրում:

Ամպ տեղափոխելով՝ AI/ML նախագծերի գործարկումը դառնում է ավելի հեշտ, քան երբևէ: Մենք կարող ենք սպառել միայն մեզ անհրաժեշտ ռեսուրսները։ Ավելին, ամպային հարթակների կողմից առաջարկվող զուգահեռացման շնորհիվ մենք կարող ենք խնայել ծախսած ժամանակը։

Բայց ինչ վերաբերում է արդյունքներին: Այստեղ ամեն ինչ ավելի է բարդանում: Մոդելներ կառուցելու համար կան բազմաթիվ գործիքներ, որոնց մասին կխոսեմ հաջորդիվ: Լավ մոդել կառուցելը հեշտ չէ, բայց ի՞նչ հետո: Բիզնես մոդելի օգտագործումից շահույթ ստանալը նույնպես աննշան խնդիր է: Խնդրի արմատը վերլուծական և գործարքային ծանրաբեռնվածության և տվյալների մոդելների տարանջատումն է: Երբ մենք մոդել ենք պատրաստում, սովորաբար դա անում ենք պատմական տվյալների վրա: Սակայն կառուցված մոդելի տեղը գործարքային տվյալների մշակումն է: Ի՞նչ օգուտ է խարդախ գործարքների հայտնաբերման լավագույն մոդելը, եթե այն գործարկենք օրը մեկ անգամ: Խաբեբաները վաղուց գնացել են փողի հետ։ Մենք պետք է ուսուցանենք մոդելը պատմական տվյալների վրա, բայց մենք նաև պետք է այն իրական ժամանակում կիրառենք նոր մուտքային տվյալների վրա, որպեսզի մեր բիզնես գործընթացները կարողանան գործել ըստ մոդելի կողմից արված կանխատեսումների:

ML Toolkit-ը գործիքների մի շարք է, որի նպատակն է հենց դա անել՝ միավորել մոդելները և գործարքային միջավայրը, որպեսզի կառուցված մոդելները հեշտությամբ օգտագործվեն անմիջապես ձեր բիզնես գործընթացներում: Python Gateway-ը ML Toolkit-ի մի մասն է և ապահովում է ինտեգրում Python լեզվի հետ (նման է, թե ինչպես R Gateway-ը, լինելով ML Toolkit-ի մաս, ապահովում է ինտեգրում R լեզվի հետ):

Инструментарий

Նախքան շարունակելը, ես կցանկանայի նկարագրել Python-ի մի քանի գործիքներ և գրադարաններ, որոնք մենք հետագայում կօգտագործենք:

Տեխնոլոգիա

  • Python-ը մեկնաբանված, բարձր մակարդակի, ընդհանուր նշանակության ծրագրավորման լեզու է: Լեզվի հիմնական առավելությունը մաթեմատիկական, ML և AI գրադարանների մեծ գրադարանն է: Ինչպես ObjectScript-ը, այն օբյեկտի վրա հիմնված լեզու է, բայց ամեն ինչ սահմանվում է դինամիկ, այլ ոչ թե ստատիկ: Նաև ամեն ինչ օբյեկտ է։ Հետագա հոդվածները ենթադրում են լեզվին անցնող ծանոթություն: Եթե ​​ցանկանում եք սկսել սովորել, խորհուրդ եմ տալիս սկսել դրանից փաստաթղթավորում.
  • Մեր հետագա վարժությունների համար սահմանեք Python 3.6.7 64 բիթ.
  • IDE: Ես օգտագործում եմ PyCharm, բայց ընդհանուր առմամբ նրանք շատ. Եթե ​​դուք օգտագործում եք Atelier, ապա կա Eclipse հավելված Python ծրագրավորողների համար: Եթե ​​դուք օգտագործում եք VS Code, կա Python-ի ընդլայնում:
  • Նոթատետր. IDE-ի փոխարեն կարող եք գրել և տարածել ձեր սցենարները առցանց նոթատետրերում: Դրանցից ամենատարածվածն է Յուպիտեր.

Գրադարաններ

Ահա մեքենայական ուսուցման գրադարանների (ոչ ամբողջական) ցանկը.

  • Չարաճճի - ճշգրիտ հաշվարկների հիմնական փաթեթ:
  • Պանդա — բարձր արդյունավետությամբ տվյալների կառուցվածքներ և տվյալների վերլուծության գործիքներ:
  • Մատպլոտլիբ - գրաֆիկների ստեղծում.
  • Ծովային — տվյալների վիզուալիզացիա՝ հիմնված matplotlib-ի վրա:
  • Sklein - մեքենայական ուսուցման մեթոդներ.
  • XGBoost — մեքենայական ուսուցման ալգորիթմներ գրադիենտ խթանման մեթոդաբանության շրջանակներում:
  • Գենսիմ - NLP.
  • Կերաս - նյարդային ցանցեր.
  • Թենսորհոսք — մեքենայական ուսուցման մոդելներ ստեղծելու հարթակ:
  • PyTorch- ը մեքենայական ուսուցման մոդելներ ստեղծելու հարթակ է՝ կենտրոնացած Python-ի վրա։
  • Նյոկա - PMML տարբեր մոդելներից:

AI/ML տեխնոլոգիաները բիզնեսը դարձնում են ավելի արդյունավետ և հարմարվող: Ավելին, այսօր այդ տեխնոլոգիաները դառնում են ավելի հեշտ մշակելն ու կիրառել։ Սկսեք սովորել AI/ML տեխնոլոգիաների մասին և ինչպես դրանք կարող են օգնել ձեր կազմակերպության զարգացմանը:

Տեղակայում

Python Gateway-ը տեղադրելու և օգտագործելու մի քանի եղանակ կա.

  • ОС
    • Windows
    • Linux
    • Mac
  • դոկեր
    • Օգտագործեք պատկեր DockerHub-ից
    • Ստեղծեք ձեր սեփական տեսքը

Անկախ տեղադրման եղանակից, ձեզ անհրաժեշտ կլինի սկզբնական կոդը: Կոդը ներբեռնելու միակ տեղն է թողարկումների էջ. Այն պարունակում է փորձարկված կայուն թողարկումներ, պարզապես վերցրեք վերջինը: Այս պահին այն 0.8 է, բայց ժամանակի ընթացքում նորերը կլինեն։ Մի կլոնավորեք/ներբեռնեք պահոցը, ներբեռնեք վերջին թողարկումը:

ОС

Եթե ​​դուք Python Gateway-ն եք տեղադրում օպերացիոն համակարգի վրա, ապա նախ (անկախ օպերացիոն համակարգից) պետք է տեղադրել Python-ը։ Սրա համար:

  1. Տեղադրեք Python 3.6.7 64 բիթ. Խորհուրդ է տրվում Python-ը տեղադրել լռելյայն գրացուցակում։
  2. Տեղադրեք մոդուլը dill: pip install dill.
  3. Ներբեռնեք ObjectScript կոդը (այսինքն. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ապրանքներով ցանկացած տարածք: Եթե ​​ցանկանում եք, որ գոյություն ունեցող տարածքը աջակցի արտադրանքին, գործարկեք. write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Տեղը զանգ DLL/SO/DYLIB դեպի թղթապանակ bin ձեր InterSystems IRIS օրինակը: Գրադարանի ֆայլը պետք է հասանելի լինի վերադարձված ճանապարհին write ##class(isc.py.Callout).GetLib().

Windows

  1. Համոզվեք, որ շրջակա միջավայրի փոփոխականը PYTHONHOME մատնանշում է Python 3.6.7-ը:
  2. Համոզվեք, որ համակարգի միջավայրի փոփոխականն է PATH պարունակում է փոփոխական PYTHONHOME (կամ գրացուցակը, որին այն մատնանշում է):

Linux (Debian/Ubuntu)

  1. Ստուգեք, որ շրջակա միջավայրի փոփոխականն է PATH պարունակում է /usr/lib и /usr/lib/x86_64-linux-gnu. Օգտագործեք ֆայլը /etc/environment շրջակա միջավայրի փոփոխականներ սահմանելու համար:
  2. Սխալների դեպքում undefined symbol: _Py_TrueStruct սահմանել պարամետրը PythonLib. Նաև ներ Readme կա Անսարքությունների վերացման բաժին:

Mac

  1. Ներկայումս միայն Python 3.6.7-ն է աջակցվում Python.org- ը. Ստուգեք փոփոխականը PATH.

Եթե ​​փոխել եք միջավայրի փոփոխականները, վերագործարկեք ձեր InterSystems արտադրանքը:

դոկեր

Բեռնարկղերի օգտագործումն ունի մի շարք առավելություններ.

  • Դյուրատարություն
  • Արդյունավետություն
  • Մեկուսացում
  • Թեթևություն
  • Անփոփոխելիություն

Ստուգեք սա հոդվածների շարք InterSystems-ի արտադրանքի հետ Docker-ի օգտագործման վերաբերյալ լրացուցիչ տեղեկությունների համար:

Python Gateway-ի բոլոր կառուցումները ներկայումս հիմնված են կոնտեյների վրա 2019.4.

Պատրաստ պատկեր

Վազել: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestներբեռնելու և գործարկելու Python Gateway-ը InterSystems IRIS Community Edition-ով: Այսքանը:

Ստեղծեք ձեր սեփական տեսքը

Դոկերի պատկեր ստեղծելու համար գործարկեք պահեստի արմատում՝ docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Լռելյայնորեն, պատկերը կառուցված է պատկերի հիման վրա store/intersystems/iris-community:2019.4.0.383.0, սակայն դուք կարող եք դա փոխել՝ փոփոխական դնելով IMAGE.
InterSystems IRIS-ից կառուցելու համար գործարկեք՝ «docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:last»:

Դրանից հետո դուք կարող եք գործարկել դոկերի պատկերը.

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

Եթե ​​դուք օգտագործում եք պատկեր, որը հիմնված է InterSystems IRIS Community Edition-ի վրա, կարող եք բաց թողնել բանալին:

Comments

  • Փորձարկման գործընթաց isc.py.test.Process պահում է մի շարք պատկերներ ժամանակավոր գրացուցակում: Դուք կարող եք փոխել այս ուղին դեպի տեղադրված գրացուցակը: Դա անելու համար խմբագրեք կարգավորումը WorkingDir նշելով տեղադրված գրացուցակը:
  • Տերմինալի գործարկում մուտք գործելու համար՝ docker exec -it irispy sh.
  • Մուտք գործել Համակարգի կառավարման պորտալ մուտք գործելու միջոցով SuperUser/SYS.
  • Բեռնարկղը դադարեցնելու համար գործարկեք. docker stop irispy && docker rm --force irispy.

Տեղադրման ստուգում

Երբ դուք տեղադրել եք Python Gateway-ը, արժե ստուգել, ​​որ այն աշխատում է: Կատարեք այս կոդը InterSystems IRIS տերմինալում.

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

Արդյունքը պետք է լինի. HELLO - Python փոփոխական արժեք x. Եթե ​​վերադարձի կարգավիճակը sc սխալ է կամ var դատարկ, ստուգեք Readme - Troubleshooting բաժին.

API

Python Gateway-ը տեղադրված է, և դուք հաստատել եք, որ այն աշխատում է: Ժամանակն է սկսել օգտագործել այն:
Python-ի հիմնական ինտերֆեյսն է isc.py.Main. Այն առաջարկում է մեթոդների հետևյալ խմբերը (բոլորը վերադարձ %Status):

  • Կոդի կատարում
  • Տվյալների փոխանցում
  • Օժանդակ

Կոդի կատարում

Այս մեթոդները թույլ են տալիս կատարել Python կամայական կոդ:

SimpleString

SimpleString - սա է հիմնական մեթոդը: Այն պահանջում է 4 կամընտիր փաստարկ.

  • code - գործարկելու համար նախատեսված կոդի տող: Գծի հոսքի բնույթ. $c(10).
  • returnVariable — վերադարձվող փոփոխականի անվանումը:
  • serialization - ինչպես սերիականացնել returnVariable. 0 — տող (կանխադրված), 1 — ռեպր.
  • result — ByRef հղում այն ​​փոփոխականին, որի մեջ գրված է արժեքը returnVariable.

Վերևում մենք արեցինք.

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

Այս օրինակում մենք վերագրում ենք Python փոփոխականին x արժեք Hello և ցանկանում եք վերադարձնել Python փոփոխականի արժեքը x ObjectScript փոփոխականին var.

ExecuteCode

ExecuteCode-ն ավելի անվտանգ և ավելի քիչ սահմանափակող այլընտրանք է SimpleString.
InterSystems IRIS պլատֆորմի տողերը սահմանափակված են 3 նիշով, և եթե ցանկանում եք ավելի երկար կոդի գործարկել, ապա պետք է օգտագործեք թելեր:
Ընդունված է երկու փաստարկ.

  • code — Python կոդի տող կամ հոսք, որը պետք է կատարվի:
  • variable — (ըստ ցանկության) նշանակում է կատարման արդյունքը code այս Python փոփոխականը:

Օգտագործման օրինակ.

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

Այս օրինակում մենք 2-ը բազմապատկում ենք 3-ով և արդյունքը գրում Python փոփոխականի վրա y.

Տվյալների փոխանցում

Տվյալների փոխանցում Python-ին և դրանից:

Python -> InterSystems IRIS

InterSystems IRIS-ում Python փոփոխականի արժեքը ստանալու 4 եղանակ կա՝ կախված ձեզ անհրաժեշտ սերիալացումից.

  • String պարզ տվյալների տեսակների և վրիպազերծման համար:
  • Repr պարզ օբյեկտների պահպանման և վրիպազերծման համար:
  • JSON InterSystems IRIS-ի կողմից տվյալների հեշտ մանիպուլյացիայի համար:
  • Pickle օբյեկտները փրկելու համար.

Այս մեթոդները թույլ են տալիս առբերել փոփոխականները Python-ից որպես տող կամ հոսք:

  • GetVariable(variable, serialization, .stream, useString) - ստանալ serialization փոփոխական variable в stream. Եթե useString 1 է, և սերիականացումը տեղադրվում է տողի վրա, այնուհետև վերադարձվում է տողը և ոչ թե հոսք:
  • GetVariableJson(variable, .stream, useString) — ստացեք փոփոխականի JSON սերիալացում:
  • GetVariablePickle(variable, .stream, useString, useDill) -ստացե՛ք Pickle (կամ սամիթ) փոփոխականի սերիականացում:

Փորձենք ստանալ մեր փոփոխականը y.

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

InterSystems IRIS -> Python

InterSystems IRIS-ից տվյալների բեռնում Python-ում:

  • ExecuteQuery(query, variable, type, namespace) - ստեղծում է տվյալների բազա (պանդաներ dataframe կամ list) sql հարցումից և սահմանում է Python փոփոխական variable. Պլաստիկ տոպրակ isc.py պետք է հասանելի լինի տարածքում namespace — հարցումը կկատարվի այնտեղ։
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - բեռնում է գլոբալ տվյալները global բաժանորդագրությունից start դեպի end Python-ում որպես տիպի փոփոխական type: list, կամ պանդաներ dataframe. կամընտիր փաստարկների նկարագրություն mask և labels հասանելի է դասի փաստաթղթերում և պահոցում Տվյալների փոխանցման փաստաթղթեր.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - բեռնում է դասի տվյալները class ID-ից start դեպի end Python-ում որպես տիպի փոփոխական type: list, կամ պանդաներ dataframe. properties — դասի հատկությունների ցուցակ (բաժանված ստորակետերով), որոնք պետք է բեռնվեն տվյալների հավաքածուում: Դիմակներն աջակցվում են * и ?. Կանխադրված - * (բոլոր հատկությունները): Սեփականություն %%CLASSNAME անտեսված.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - բեռնում է աղյուսակի տվյալները table ID-ից start դեպի end Python-ում։

ExecuteQuery — ունիվերսալ (ցանկացած ճիշտ SQL հարցում կփոխանցվի Python-ին): Այնուամենայնիվ, ExecuteGlobal և դրա փաթաթանները ExecuteClass и ExecuteTable աշխատել մի շարք սահմանափակումներով. Նրանք շատ ավելի արագ են (3-5 անգամ ավելի արագ, քան ODBC դրայվերը և 20 անգամ ավելի արագ ExecuteQuery) Լրացուցիչ տեղեկություններ այստեղ Տվյալների փոխանցման փաստաթղթեր.
Այս բոլոր մեթոդներն աջակցում են տվյալների փոխանցմանը ցանկացած տարածքից: Պլաստիկ տոպրակ isc.py պետք է հասանելի լինի թիրախային տարածքում:

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — ցանկացած ճիշտ SQL հարցման արդյունքների փոխանցում Python-ին: Սա տվյալների փոխանցման ամենադանդաղ մեթոդն է: Օգտագործեք այն, եթե ExecuteGlobal իսկ դրա փաթաթանները հասանելի չեն:

Փաստարկներ:

  • query - sql հարցում:
  • variable — Python փոփոխականի անունը, որի մեջ գրված են տվյալները:
  • type - list կամ Պանդաներ dataframe.
  • namespace - այն տարածքը, որտեղ կիրականացվի հարցումը:

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - անցնելով գլոբալ Python-ում:

Փաստարկներ:

  • global - գլոբալ անվանում առանց ^
  • variable — Python փոփոխականի անունը, որի մեջ գրված են տվյալները:
  • type - list կամ Պանդաներ dataframe.
  • start — գլոբալ առաջին բաժանորդը։ Պարտադիր %Integer.
  • end - գլոբալ վերջին բաժանորդագրությունը: Պարտադիր %Integer.
  • mask - համաշխարհային արժեքային դիմակ: Դիմակը կարող է ավելի կարճ լինել, քան գլոբալ դաշտերի քանակը (որ դեպքում վերջում գտնվող դաշտերը բաց կթողնեն): Ինչպես ձևավորել դիմակ.
    • + փոխանցեք արժեքը այնպես, ինչպես կա:
    • - բաց թողնել արժեքը.
    • b - Բուլյան տիպ (0 - False, մնացած բոլորը - True).
    • d — Ամսաթիվ ($horolog-ից, Windows-ում՝ 1970-ից, Linux-ում՝ 1900-ից):
    • t — Ժամանակը ($horolog, կեսգիշերից վայրկյաններ անց):
    • m — Ժամային դրոշմակնիք (տողի ձևաչափը ՏԱՐԻ-ԱՄԻՍ-ՕՐ ԺԱՄ: MINUTE:SECOND):
  • labels — %Սյունակների անունների ցանկ։ Առաջին տարրը բաժանորդի անունն է:
  • namespace - այն տարածքը, որտեղ կիրականացվի հարցումը:

ExecuteClass

Փաթաթել ExecuteGlobal. Դասի սահմանման հիման վրա պատրաստում է զանգ ExecuteGlobal և կանչում է նրան.

ExecuteClass(class, variable, type, start, end, properties, namespace) - դասի տվյալների փոխանցում Python-ում:

Փաստարկներ:

  • class - դասի անվանումը
  • variable — Python փոփոխականի անունը, որի մեջ գրված են տվյալները:
  • type - list կամ Պանդաներ dataframe.
  • start - մեկնարկային ID:
  • end - վերջնական ID
  • properties — դասի հատկությունների ցուցակ (բաժանված ստորակետերով), որոնք պետք է բեռնվեն տվյալների հավաքածուում: Դիմակներն աջակցվում են * и ?. Կանխադրված - * (բոլոր հատկությունները): Սեփականություն %%CLASSNAME անտեսված.
  • namespace - այն տարածքը, որտեղ կիրականացվի հարցումը:

Բոլոր հատկությունները փոխանցվում են այնպես, ինչպես կա, բացառությամբ տիպի հատկությունների %Date, %Time, %Boolean и %TimeStamp - դրանք վերածվում են համապատասխան Python դասերի:

ExecuteTable

Փաթաթել ExecuteClass. Թարգմանում է աղյուսակի անվանումը դասի անվան և կանչերի ExecuteClass. Ստորագրություն:

ExecuteTable(table, variable, type, start, end, properties, namespace) - սեղանի տվյալները Python-ին փոխանցելը:

Փաստարկներ:

  • table - սեղանի անվանումը.
    Մնացած բոլոր փաստարկներն ընդունվում են այնպես, ինչպես կա ExecuteClass.

Նշումներ

  • ExecuteGlobal, ExecuteClass и ExecuteTable աշխատել նույնքան արագ:
  • ExecuteGlobal 20 անգամ ավելի արագ, քան ExecuteQuery տվյալների մեծ հավաքածուներում (փոխանցման ժամանակը >0.01 վայրկյան):
  • ExecuteGlobal, ExecuteClass и ExecuteTable աշխատել գլոբալների վրա այս կառուցվածքով. ^global(key) = $lb(prop1, prop2, ..., propN) որտեղ key - ամբողջ թիվ.
  • Համար ExecuteGlobal, ExecuteClass и ExecuteTable աջակցվող արժեքների շրջանակ %Date համապատասխանում է միջակայքին mktime և կախված է ՕՀ-ից (ապակիները1970-01-01, Linux 1900-01-01, Mac) Օգտագործեք %TimeStampտվյալ տիրույթից դուրս տվյալներ փոխանցելու համար կամ օգտագործել պանդաների տվյալների շրջանակը, քանի որ սա միայն ցանկի սահմանափակում է:
  • Համար ExecuteGlobal, ExecuteClass и ExecuteTable բոլոր արգումենտները, բացառությամբ տվյալների աղբյուրի (գլոբալ, դասի կամ աղյուսակի) և փոփոխականի, կամընտիր են:

օրինակները

Թեստային դաս isc.py.test.Person պարունակում է տվյալների փոխանցման բոլոր տարբերակները ցուցադրող մեթոդ.

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)

Զանգահարեք մեթոդը do ##class(isc.py.test.Person).Test() տեսնել, թե ինչպես են աշխատում տվյալների փոխանցման բոլոր մեթոդները:

Օգնական մեթոդներ

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — տեղեկատվություն ստանալ փոփոխականի մասին՝ արդյոք այն սահմանված է, նրա դասը և սերիականացման երկարությունը:
  • GetVariableDefined(variable, .defined) - արդյոք փոփոխականը սահմանված է:
  • GetVariableType(variable, .type) - ստացեք փոփոխականի դասը:
  • GetStatus() - ստացեք և հեռացրեք Python-ի վերջին բացառությունը:
  • GetModuleInfo(module, .imported, .alias) — ստանալ մոդուլի փոփոխական և ներմուծման կարգավիճակ:
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — տեղեկություններ ստանալ գործառույթի մասին:

Փոխգործունակություն

Դուք սովորել եք, թե ինչպես զանգահարել Python Gateway-ին տերմինալից, հիմա եկեք սկսենք օգտագործել այն արտադրության մեջ: Այս ռեժիմում Python-ի հետ փոխգործակցության հիմքն է isc.py.ens.Operation. Այն մեզ թույլ է տալիս.

  • Կատարեք կոդը Python-ում
  • Պահպանել/Վերականգնել Python համատեքստը
  • Բեռնել և ստանալ տվյալներ Python-ից

Ըստ էության, Python գործողությունը ավարտված է isc.py.Main. Գործողություն isc.py.ens.Operation ապահովում է InterSystems IRIS արտադրանքներից Python գործընթացի հետ փոխազդելու հնարավորություն: Աջակցվում է հինգ հարցում.

  • isc.py.msg.ExecutionRequest Python կոդը գործարկելու համար: Վերադարձնում է isc.py.msg.ExecutionResponse կատարման արդյունքով և պահանջվող փոփոխականների արժեքներով:
  • isc.py.msg.StreamExecutionRequest Python կոդը գործարկելու համար: Վերադարձնում է isc.py.msg.StreamExecutionResponse կատարման արդյունքը և պահանջվող փոփոխականների արժեքները: Անալոգային isc.py.msg.ExecutionRequest, բայց ընդունում և վերադարձնում է հոսքերը տողերի փոխարեն:
  • isc.py.msg.QueryRequest SQL հարցման կատարման արդյունքը փոխանցելու համար։ Վերադարձնում է Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest գլոբալ/դասի/աղյուսակի տվյալների փոխանցման համար։ Վերադարձնում է Ens.Response.
  • isc.py.msg.SaveRequest Python-ի համատեքստը պահպանելու համար: Վերադարձնում է Ens.StringResponse համատեքստի ID-ով:
  • isc.py.msg.RestoreRequest վերականգնել Python համատեքստը:

    Բացի այդ, isc.py.ens.Operation ունի երկու կարգավորում.

    • Initializer — ինտերֆեյսը իրականացնող դասի ընտրություն isc.py.init.Abstract. Այն կարող է օգտագործվել ֆունկցիաներ, մոդուլներ, դասեր և այլն բեռնելու համար: Այն իրականացվում է մեկ անգամ, երբ գործընթացը սկսվում է:
    • PythonLib - (միայն Linux-ը), եթե բեռնելիս սխալներ եք տեսնում, սահմանեք դրա արժեքը libpython3.6m.so կամ նույնիսկ Python գրադարանի ամբողջ ճանապարհին:

Բիզնես գործընթացների ստեղծում

Գոյություն ունեն երկու դաս, որոնք նպաստում են բիզնես գործընթացների զարգացմանը.

  • isc.py.ens.ProcessUtils թույլ է տալիս անոտացիաներ հանել գործողություններից փոփոխական փոխարինմամբ:
  • isc.py.util.BPEmulator հեշտացնում է Python-ով բիզնես գործընթացների փորձարկումը: Այն կարող է իրականացնել բիզնես գործընթաց (Python մասեր) ընթացիկ գործընթացում:

Փոփոխական փոխարինում

Բոլոր բիզնես գործընթացները, որոնք ժառանգված են isc.py.ens.ProcessUtils, կարող է օգտագործել մեթոդը GetAnnotation(name) գործունեության անոտացիայի արժեքը իր անունով ստանալու համար: Գործունեության անոտացիան կարող է պարունակել փոփոխականներ, որոնք կհաշվարկվեն InterSystems IRIS կողմում՝ նախքան Python-ին փոխանցելը: Ահա փոփոխականի փոխարինման շարահյուսությունը.

  • ${class:method:arg1:...:argN} - մեթոդի զանգ
  • #{expr} - գործարկել կոդը ObjectScript լեզվով:

Օրինակը հասանելի է թեստային բիզնես գործընթացում isc.py.test.Processօրինակ՝ գործունեության մեջ Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Այս օրինակում.

  • #{process.WorkDirectory} վերադարձնում է օբյեկտի WorkDirectory հատկությունը process, որը դասի օրինակ է isc.py.test.Process դրանք. ընթացիկ բիզնես գործընթաց.
  • ${%PopulateUtils:Integer:1:100} կոչում է մեթոդ Integer դաս %PopulateUtils, փաստարկներ փոխանցելով 1 и 100, վերադարձնելով տիրույթում պատահական ամբողջ թիվ 1...100.

Փորձարկել բիզնես գործընթացը

Փորձարկման արտադրանքները և փորձարկման բիզնես գործընթացները հասանելի են լռելյայնորեն որպես Python Gateway-ի մաս: Դրանք օգտագործելու համար.

  1. OS տերմինալում գործարկեք՝ pip install pandas matplotlib seaborn.
  2. InterSystems IRIS տերմինալում գործարկեք՝ do ##class(isc.py.test.CannibalizationData).Import() թեստի տվյալները լրացնելու համար։
  3. Գործարկել արտադրանքը isc.py.test.Production.
  4. Ուղարկեք հարցումի տեսակը Ens.Request в isc.py.test.Process.

Տեսնենք, թե ինչպես է այդ ամենը աշխատում միասին: Բաց isc.py.test.Process BPL խմբագրում.

Python Gateway InterSystems IRIS-ում

Կոդի կատարում

Ամենակարևոր մարտահրավերը Python ծածկագրի կատարումն է.

Python Gateway InterSystems IRIS-ում

Օգտագործված հարցում isc.py.msg.ExecutionRequest, ահա նրա հատկությունները.

  • Code - Python կոդը:
  • SeparateLines — արդյո՞ք կոդը բաժանել տողերի կատարման համար: $c(10) (n) օգտագործվում է տողերն առանձնացնելու համար։ Խնդրում ենք նկատի ունենալ, որ խորհուրդ չի տրվում միանգամից մշակել ամբողջ հաղորդագրությունը, այս գործառույթը նախատեսված է միայն մշակելու համար def և նմանատիպ բազմագիծ արտահայտություններ։ Կանխադրված 0.
  • Variables — ստորակետերով բաժանված փոփոխականների ցանկ, որոնք կավելացվեն պատասխանին:
  • Serialization — Ինչպես սերիականացնել այն փոփոխականները, որոնք մենք ցանկանում ենք վերադարձնել: Ընտրանքներ: Str, Repr, JSON, Pickle и Dill, լռելյայն Str.

Մեր դեպքում մենք միայն գույք ենք սահմանել Code, այնպես որ բոլոր մյուս հատկությունները օգտագործում են լռելյայն արժեքները: Զանգահարելով սահմանել ենք process.GetAnnotation("Import pandas"), որը գործարկման ժամանակ վերադարձնում է անոտացիա փոփոխականի փոխարինումից հետո: Ի վերջո, կոդը import pandas as pd կփոխանցվի Python-ին։ GetAnnotation կարող է օգտակար լինել Python-ի բազմաթիվ տողերի սկրիպտներ ստանալու համար, սակայն կոդ ստանալու այս մեթոդի վրա սահմանափակումներ չկան: Դուք կարող եք սահմանել գույքը Code Ձեզ հարմար ցանկացած ձևով:

Փոփոխականներ ստանալը

Մեկ այլ հետաքրքիր մարտահրավեր օգտագործելով isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway InterSystems IRIS-ում

Այն հաշվարկում է հարաբերակցության մատրիցը Python-ի կողմում և հանում փոփոխականը corrmat վերադառնալ InterSystems IRIS JSON ձևաչափով` սահմանելով հարցման հատկությունները.

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

Արդյունքները կարող ենք տեսնել Visual Trace-ում.

Python Gateway InterSystems IRIS-ում

Եվ եթե մեզ անհրաժեշտ է այս արժեքը BP-ում, մենք կարող ենք այն ստանալ այսպես. callresponse.Variables.GetAt("corrmat").

Տվյալների փոխանցում

Հաջորդը, եկեք խոսենք InterSystems IRIS-ից Python տվյալների փոխանցման մասին; տվյալների փոխանցման բոլոր հարցումներն իրականացնում են ինտերֆեյսը: isc.py.msg.DataRequestորն ապահովում է հետևյալ հատկությունները.

  • Variable — Python փոփոխական, որի մեջ գրված են տվյալները:
  • Type - փոփոխական տեսակ. dataframe (պանդաների տվյալների շրջանակ) կամ list.
  • Namespace — տարածքը, որտեղից մենք ստանում ենք տվյալներ: Պլաստիկ տոպրակ isc.py պետք է հասանելի լինի այս տարածքում: Սա կարող է լինել առանց արտադրանքի աջակցության տարածք:

Այս ինտերֆեյսի հիման վրա իրականացվում է հարցումների 4 դաս.

  • isc.py.msg.QueryRequest - սահմանել գույքը Query SQL հարցում ուղարկելու համար:
  • isc.py.msg.ClassRequest - սահմանել գույքը Class դասի տվյալները փոխանցելու համար:
  • isc.py.msg.TableRequest - սահմանել գույքը Table աղյուսակի տվյալները փոխանցելու համար:
  • isc.py.msg.GlobalRequest - սահմանել գույքը Global տվյալների գլոբալ փոխանցման համար:

Փորձարկման գործընթացում նայեք գործունեությանը RAWՈրտեղ isc.py.msg.QueryRequest ցուցադրված է գործողության մեջ:

Python Gateway InterSystems IRIS-ում

Պիթոնի համատեքստի պահպանում/վերականգնում

Վերջապես, մենք կարող ենք Python-ի համատեքստը պահել InterSystems IRIS-ում, դա անելու համար մենք կուղարկենք isc.py.msg.SaveRequest փաստարկներով.

  • Mask — Պահվում են միայն դիմակին համապատասխանող փոփոխականները: Աջակցված է * и ?. Օրինակ: "Data*, Figure?". Կանխադրված *.
  • MaxLength — Պահված փոփոխականի առավելագույն երկարությունը: Եթե ​​փոփոխականի սերիականացումը ավելի երկար է, այն անտեսվելու է: Սահմանեք 0՝ ցանկացած երկարության փոփոխականներ ստանալու համար: Կանխադրված $$$MaxStringLength.
  • Name - Համատեքստի անուն (ըստ ցանկության):
  • Description — Համատեքստի նկարագրություն (ըստ ցանկության):

Վերադառնում է Ens.StringResponse с Id պահպանված համատեքստ: Փորձարկման գործընթացում նայեք գործունեությանը Save Context.

Առնչվող հարցում isc.py.msg.RestoreRequest բեռնում է համատեքստը InterSystems IRIS-ից Python-ում.

  • ContextId - համատեքստի նույնացուցիչ:
  • Clear — մաքրել համատեքստը նախքան վերականգնելը:

Jupyter Notebook

Jupyter Notebook բաց կոդով վեբ հավելված է, որը թույլ է տալիս ստեղծել և հրապարակել կոդ, վիզուալիզացիա և տեքստ պարունակող նոթատետրեր: Python Gateway-ը թույլ է տալիս դիտել և խմբագրել BPL գործընթացները Jupyter Notebook-ի տեսքով: Խնդրում ենք նկատի ունենալ, որ ներկայումս օգտագործվում է սովորական Python 3 կատարողը:

Այս ընդլայնումը ենթադրում է, որ անոտացիաները պարունակում են Python կոդ և օգտագործում են գործունեության անվանումները որպես նախորդ վերնագրեր: Այժմ հնարավոր է զարգացնել PythonGateway բիզնես գործընթացները Jupyter Notebook-ում։ Ահա թե ինչ է հնարավոր.

  • Ստեղծել նոր բիզնես գործընթացներ
  • Ջնջել բիզնես գործընթացները
  • Ստեղծել նոր գործունեություն
  • Փոխել գործունեությունը
  • Ջնջել գործողությունները

Այստեղ ցուցադրական տեսանյութ. Եվ մի քանի սքրինշոթ.

Գործընթացների Explorer

Python Gateway InterSystems IRIS-ում

Գործընթացի խմբագիր

Python Gateway InterSystems IRIS-ում

Տեղակայում

  1. Ձեզ անհրաժեշտ կլինի InterSystems IRIS 2019.2+:
  2. Տեղադրեք PythonGateway v0.8+ (միայն պարտադիր isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Թարմացրեք ObjectScript կոդը պահեստից:
  4. Կատարել do ##class(isc.py.util.Jupyter).Install() և հետևեք հրահանգներին:

Փաստաթղթերով հիմնավորում.

Արդյունքները

MLToolkit-ը գործիքների մի շարք է, որի նպատակն է համատեղել մոդելները և գործարքային միջավայրը, որպեսզի կառուցված մոդելները հեշտությամբ օգտագործվեն անմիջապես ձեր բիզնես գործընթացներում: Python Gateway-ը MLToolkit-ի մի մասն է և ապահովում է Python լեզվի հետ ինտեգրում՝ թույլ տալով կազմակերպել Python-ում ստեղծված ցանկացած մեքենայական ուսուցման ալգորիթմ (բազմաթիվ տվյալների գիտնականների հիմնական միջավայրը), օգտագործել բազմաթիվ պատրաստի գրադարաններ՝ արագորեն ստեղծելու հարմարվողական, ռոբոտային վերլուծական AI / ML լուծումներ InterSystems IRIS հարթակի վրա:

Սայլակ

MLToolkit

MLToolkit օգտատերերի խումբը մասնավոր GitHub պահոց է, որը ստեղծվել է որպես InterSystems կորպորատիվ GitHub կազմակերպության մաս: Այն նախատեսված է արտաքին օգտատերերի համար, ովքեր տեղադրում են, սովորում կամ արդեն օգտագործում են MLToolkit բաղադրիչները, ներառյալ Python Gateway-ը: Խումբն ունի մի շարք իրականացված դեպքեր (աղբյուրային կոդով և թեստային տվյալներով) շուկայավարման, արտադրության, բժշկության և բազմաթիվ այլ ոլորտներում։ ML Toolkit User Group-ին միանալու համար խնդրում ենք կարճ նամակ ուղարկել հետևյալ հասցեով. [էլեկտրոնային փոստով պաշտպանված] և ձեր նամակում ներառեք հետևյալ տեղեկությունները.

  • GitHub օգտվողի անուն
  • Կազմակերպություն (դուք աշխատում եք կամ սովորում)
  • Պաշտոնը (ձեր փաստացի պաշտոնը ձեր կազմակերպությունում՝ «Ուսանող» կամ «Անկախ»):
  • Երկիր

Նրանց համար, ովքեր կարդացել են հոդվածը և հետաքրքրված են InterSystems IRIS-ի հնարավորություններով՝ որպես արհեստական ​​ինտելեկտի և մեքենայական ուսուցման շարժիչների մշակման կամ հոսթինգի հարթակ, հրավիրում ենք ձեզ քննարկելու ձեր ձեռնարկությանը հետաքրքրող հնարավոր սցենարները: Մենք ուրախ կլինենք վերլուծել ձեր ընկերության կարիքները և համատեղ որոշել գործողությունների ծրագիր. Մեր AI/ML փորձագիտական ​​թիմի էլփոստի հասցեն – [էլեկտրոնային փոստով պաշտպանված].

Source: www.habr.com

Добавить комментарий