InterSystems IRIS жүйесіндегі Python шлюзі

Бұл мақала Python Gateway туралы, InterSystems IRIS деректер платформасына арналған ашық бастапқы қауымдастық жобасы. Бұл жоба Python-да жасалған кез келген машиналық оқыту алгоритмдерін (көптеген деректер ғалымдары үшін негізгі орта) ұйымдастыруға, InterSystems IRIS платформасында бейімделгіш, роботты аналитикалық AI/ML шешімдерін жылдам жасау үшін көптеген дайын кітапханаларды пайдалануға мүмкіндік береді. Бұл мақалада мен InterSystems IRIS бағдарламасы Python процестерін қалай реттей алатынын, екі жақты деректерді тиімді тасымалдауды және интеллектуалды бизнес-процестерді қалай жасай алатынын көрсетемін.

жоспар

  1. Кіріспе.
  2. Құралдар.
  3. Орнату.
  4. API.
  5. Өзара әрекеттестік.
  6. Jupyter дәптері.
  7. Қорытындылар.
  8. Сілтемелер.
  9. M.L. Toolkit.

Кіріспе

Python - әзірлеушілердің өнімділігін және кодты оқу мүмкіндігін жақсартуға бағытталған жоғары деңгейлі, жалпы мақсаттағы бағдарламалау тілі. Осы мақалалар сериясында мен InterSystems IRIS платформасында Python тілін пайдалану мүмкіндіктері туралы айтатын боламын, бұл мақаланың негізгі бағыты Python тілін машиналық оқыту үлгілерін жасау және қолдану тілі ретінде пайдалану болып табылады.

Machine Learning (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 пайдалансаңыз, Python әзірлеушілеріне арналған Eclipse плагині бар. Егер сіз VS кодын пайдалансаңыз, онда Python үшін кеңейтім бар.
  • Жазу кітапшасы: IDE орнына сценарийлерді онлайн жазу кітапшаларында жазуға және ортақ пайдалануға болады. Олардың ең танымалы Юпитер.

Кітапханалар

Мұнда машиналық оқыту кітапханаларының (жартылай) тізімі берілген:

  • Жалаңаш — нақты есептеулер үшін іргелі пакет.
  • Панда — жоғары өнімді деректер құрылымдары және деректерді талдау құралдары.
  • matplotlib - Диаграммаларды құру.
  • Теңіз - matplotlib негізіндегі деректерді визуализациялау.
  • Склерн — машиналық оқыту әдістері.
  • XGBoost — Gradient Boosting әдістемесі шеңберінде машиналық оқыту алгоритмдері.
  • Gensim — NLP.
  • Керас - нейрондық желілер.
  • Тенсорлық ағын машиналық оқыту үлгілерін жасауға арналған платформа болып табылады.
  • PyTorch Python-ға бағытталған машиналық оқыту үлгілерін жасауға арналған платформа.
  • Nyoka - Әртүрлі үлгілерден PMML.

AI/ML технологиялары бизнесті тиімдірек және бейімделгіш етеді. Оның үстіне, бүгінгі күні бұл технологияларды әзірлеу және енгізу оңайырақ. AI/ML технологиялары және олардың ұйымыңыздың өсуіне қалай көмектесетінін білуді бастаңыз.

параметр

Python шлюзін орнатудың және пайдаланудың бірнеше жолы бар:

  • ОС
    • Windows
    • Linux
    • Mac
  • Докер
    • DockerHub кескінін пайдаланыңыз
    • Өз көрінісіңізді жасаңыз

Орнату әдісіне қарамастан, сізге бастапқы код қажет болады. Кодты жүктеп алатын жалғыз орын шығаратын беті. Онда тексерілген тұрақты шығарылымдар бар, тек соңғысын алыңыз. Қазіргі уақытта ол 0.8, бірақ уақыт өте келе жаңалары пайда болады. Репозиторийді клондамаңыз/жүктемеңіз, соңғы шығарылымды жүктеп алыңыз.

ОС

Егер сіз Python шлюзін операциялық жүйеге орнатып жатсаңыз, алдымен (операциялық жүйеге қарамастан) 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:latestPython 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 --teg intersystemcommmunity/irispy:latest'.

Осыдан кейін сіз докер кескінін іске қоса аласыз:

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 негізіндегі кескінді пайдалансаңыз, кілтті көрсетудің қажеті жоқ.

Пікірлер

  • Сынақ процесі isc.py.test.Process бірқатар кескіндерді уақытша каталогқа сақтайды. Бұл жолды бекітілген каталогқа өзгерткіңіз келуі мүмкін. Мұны істеу үшін параметрді өңдеңіз WorkingDir орнатылған каталогты көрсету.
  • Терминалға қол жеткізу үшін келесі әрекеттерді орындаңыз: docker exec -it irispy sh.
  • Жүйені басқару порталына кіру арқылы кіру SuperUser/SYS.
  • Контейнерді тоқтату үшін келесі әрекеттерді орындаңыз: docker stop irispy && docker rm --force irispy.

Орнатуды тексеру

Python шлюзін орнатқаннан кейін оның жұмыс істеп тұрғанын тексерген жөн. Бұл кодты 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 — Ақауларды жою бөлімі.

API

Python шлюзі орнатылды және сіз оның жұмыс істеп тұрғанын растадыңыз. Оны пайдалануды бастау уақыты!
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 641 144 таңбамен шектелген және кодтың ұзағырақ бөлігін орындағыңыз келсе, ағындарды пайдалануыңыз керек.
Ол үшін екі аргумент қажет:

  • 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) -Айнымалының тұздалған (немесе аскөк) сериялануын алыңыз.

Айнымалы мәнімізді алуға тырысайық 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) - деректер жиынын жасайды (pandas 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 идентификатордан start қарай end Python тілінде айнымалы түр ретінде type: list, немесе пандалар dataframe. properties — деректер жиынына жүктелетін класс қасиеттерінің тізімі (үтірмен бөлінген). Маскаларға қолдау көрсетіледі * и ?. Әдепкі - * (барлық қасиеттер). Меншік %%CLASSNAME еленбейді.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - кесте деректерін жүктейді table идентификатордан start қарай end питон тілінде.

ExecuteQuery - әмбебап (кез келген жарамды SQL сұрауы Python-ға жіберіледі). Дегенмен, ExecuteGlobal және оның орамалдары ExecuteClass и ExecuteTable бірқатар шектеулермен жұмыс істеу. Олар әлдеқайда жылдам (ODBC драйверінен 3-5 есе жылдам және 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 — Уақыт белгісі (ЖЫЛ-АЙ-КҮН САҒАТ:МИНУТ:ЕКІНШІ пішім жолы).
  • labels - % Баған атауларының тізімі. Бірінші элемент - тармақтың аты.
  • namespace - сұраныс орындалатын аумақ.

ExecuteClass

ораңыз ExecuteGlobal. Класс анықтамасы негізінде қоңырауды дайындайды ExecuteGlobal және оны шақырады.

ExecuteClass(class, variable, type, start, end, properties, namespace) - сынып деректерін Python-ға беру.

Аргументтер:

  • class - сынып атауы
  • variable - деректер жазылған Python айнымалысының аты.
  • type - list немесе пандалар dataframe.
  • start — бастапқы идентификатор.
  • end - соңғы идентификатор
  • properties — деректер жиынына жүктелетін класс қасиеттерінің тізімі (үтірмен бөлінген). Маскаларға қолдау көрсетіледі * и ?. Әдепкі - * (барлық қасиеттер). Меншік %%CLASSNAME еленбейді.
  • namespace - сұраныс орындалатын аумақ.

Түр сипаттарынан басқа барлық сипаттар берілгендей жіберіледі %Date, %Time, %Boolean и %TimeStamp - олар сәйкес Python сыныптарына түрлендіріледі.

Орындау кестесі

ораңыз 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 және ОЖ-ға байланыстыWindows: 1970-01-01, Linux 1900-01-01, Mac). Қолдану %TimeStampдеректерді осы ауқымнан тыс жіберу немесе pandas dataframe ретінде пайдалану бұл шектеу тек тізімге арналған.
  • үшін 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-дан деректерді жүктеп алыңыз және алыңыз

Негізінде, Pyhton операциясы - бұл орауыш 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 контекст идентификаторымен.
  • 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) әрекет аннотациясының мәнін оның аты бойынша алу үшін. Әрекет аннотациясында Python жүйесіне жіберілмес бұрын InterSystems IRIS жағында бағаланатын айнымалылар болуы мүмкін. Міне, ауыспалы ауыстыру синтаксисі:

  • ${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 шлюзінің бөлігі ретінде қол жетімді. Оларды пайдалану үшін:

  1. ОЖ терминалында іске қосу: 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 редакторында:

InterSystems IRIS жүйесіндегі Python шлюзі

Кодтың орындалуы

Ең маңызды қоңырау - Python кодының орындалуы:

InterSystems IRIS жүйесіндегі Python шлюзі

Сұраныс қолданылды 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:

InterSystems IRIS жүйесіндегі Python шлюзі

Ол Python жағындағы корреляциялық матрицаны есептеп, айнымалыны шығарады corrmat сұрау сипаттарын орнату арқылы JSON пішіміндегі InterSystems IRIS жүйесіне оралыңыз:

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

Нәтижелерді Visual Trace ішінде көре аламыз:

InterSystems IRIS жүйесіндегі Python шлюзі

Ал егер бізге АД-де бұл мән қажет болса, оны келесідей алуға болады: callresponse.Variables.GetAt("corrmat").

Деректерді беру

Әрі қарай, InterSystems IRIS-тен Python-ға деректерді тасымалдау туралы сөйлесейік, барлық деректерді беру сұраулары интерфейсті жүзеге асырады isc.py.msg.DataRequest, ол келесі қасиеттерді қамтамасыз етеді:

  • Variable деректер жазылатын Python айнымалысы болып табылады.
  • Type - айнымалы түрі: dataframe (pandas 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 әрекетте көрсетіледі.

InterSystems IRIS жүйесіндегі Python шлюзі

Python мәтінмәнін сақтау/қалпына келтіру

Соңында, біз 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 шлюзі BPL процестерін Jupyter жазу кітапшасы ретінде көруге және өңдеуге мүмкіндік береді. Қазіргі уақытта қарапайым Python 3 орындаушысы қолданылып жатқанын ескеріңіз.

Бұл кеңейтімде аннотацияларда Python коды бар және әрекет атаулары алдыңғы тақырыптар ретінде пайдаланылады деп болжайды. Енді Jupyter Notebook бағдарламасында PythonGateway бизнес-процестерін дамытуға болады. Міне, мүмкін:

  • Жаңа бизнес-процестерді жасаңыз
  • Бизнес процестерді жою
  • Жаңа әрекеттерді жасаңыз
  • Әрекеттерді өзгерту
  • Әрекеттерді жою

осында демо бейне. Және кейбір скриншоттар:

Процесс Explorer

InterSystems IRIS жүйесіндегі Python шлюзі

Процесс редакторы

InterSystems IRIS жүйесіндегі Python шлюзі

параметр

  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-ны жылдам жасау үшін көптеген дайын кітапханаларды пайдалануға мүмкіндік береді. IRIS InterSystems платформасындағы ML шешімдері.

сілтемелер

MLToolkit

MLToolkit пайдаланушы тобы InterSystems корпоративтік GitHub ұйымының бөлігі ретінде жасалған жеке GitHub репозиторийі болып табылады. Ол MLToolkit құрамдастарын, соның ішінде Python Gateway бағдарламасын орнатып, үйреніп жатқан немесе пайдаланып жатқан сыртқы пайдаланушыларға арналған. Топта маркетинг, өндіріс, медицина және басқа да көптеген салаларда бірқатар іске асырылған істер (бастапқы код және сынақ деректері бар) бар. ML Toolkit пайдаланушылар тобына қосылу үшін мына мекенжайға қысқа электрондық хат жіберіңіз: [электрондық пошта қорғалған] және хатыңызға келесі ақпаратты қосыңыз:

  • GitHub пайдаланушы аты
  • Ұйымдастыру (сіз жұмыс істейсіз немесе оқисыз)
  • Лауазым (ұйымыңыздағы нақты лауазымыңыз, «Студенттік» немесе «Тәуелсіз»).
  • ел

Мақаланы оқығандар және InterSystems IRIS-ке жасанды интеллект пен машиналық оқыту механизмдерін әзірлеуге немесе орналастыруға арналған платформа ретінде қызығушылық танытқандар үшін біз сізді кәсіпорыныңызды қызықтыратын ықтимал сценарийлерді талқылауға шақырамыз. Біз сіздің кәсіпорынның қажеттіліктерін талдап, бірлесіп әрекет жоспарын анықтаймыз; AI/ML сарапшылар тобының байланыс электрондық пошта мекенжайы – [электрондық пошта қорғалған].

Ақпарат көзі: www.habr.com

пікір қалдыру