Ин мақола дар бораи Python Gateway, як лоиҳаи ҷомеаи кушодаасос барои платформаи додаҳои InterSystems IRIS мебошад. Ин лоиҳа ба шумо имкон медиҳад, ки ҳама алгоритмҳои омӯзиши мошиниро, ки дар Python сохта шудаанд (муҳити асосӣ барои бисёре аз маълумотшиносон), истифода баред, китобхонаҳои сершумори омодаро барои зуд эҷод кардани қарорҳои мутобиқшавӣ ва роботии таҳлилии AI/ML дар платформаи InterSystems IRIS истифода баред. Дар ин мақола, ман ба шумо нишон медиҳам, ки чӣ тавр InterSystems IRIS метавонад равандҳои Python-ро ташкил кунад, иртиботи муассири дуҷониба анҷом диҳад ва равандҳои соҳибақлро эҷод кунад.
Нақша
- Муқаддима.
- Асбобҳо.
- Насбкунӣ
- API.
- Муносибати мутақобила.
- Дафтарчаи Юпитер.
- Хулоса.
- Пайвандҳо.
- Toolkit M.L.
Муқаддима
Python як забони барномасозии сатҳи баланд ва умумӣ мебошад, ки ба баланд бардоштани маҳсулнокии таҳиягарон ва хониши код нигаронида шудааст. Дар ин силсила мақолаҳо ман дар бораи имкониятҳои истифодаи забони Python дар платформаи InterSystems IRIS сӯҳбат хоҳам кард, дар ҳоле ки таваҷҷӯҳи асосии ин мақола истифодаи Python ҳамчун забон барои эҷод ва татбиқи моделҳои омӯзиши мошинсозӣ мебошад.
Омӯзиши мошинсозӣ (ML) як синфи усулҳои зеҳни сунъӣ мебошад, ки хусусияти хоси он на ҳалли мустақими масъала, балки омӯзиш дар раванди ҳалли бисёр масъалаҳои шабеҳ мебошад.
Алгоритмҳо ва моделҳои омӯзиши мошинсозӣ торафт маъмултар мешаванд. Сабабҳои зиёде барои ин вуҷуд доранд, аммо ҳамааш ба дастрасӣ, соддагӣ ва ба даст овардани натиҷаҳои амалӣ вобаста аст. Оё кластерсозӣ ё ҳатто моделсозии шабакаи нейронӣ технологияи нав аст?
Албатта не, аммо имрӯзҳо барои иҷро кардани як модел садҳо ҳазор сатри рамз навиштан лозим нест ва хароҷоти эҷоду истифодаи моделҳо рӯз то рӯз кам мешавад.
Асбобҳо таҳаввул меёбанд - дар ҳоле ки мо абзорҳои пурраи GUI нигаронидашудаи AI/ML надорем, пешрафте, ки мо дар бисёр синфҳои дигари системаҳои иттилоотӣ, аз қабили BI (аз навиштани код то истифодаи чаҳорчӯбаҳо ва ҳалли танзимшавандаи ба GUI нигаронидашуда) дидаем, низ дида мешавад. дар воситаҳои эҷоди AI/ML. Мо аллакай аз марҳилаи навиштани код гузаштаем ва имрӯз мо чаҳорчӯбҳоро барои сохтан ва омӯзиши моделҳо истифода мебарем.
Дигар беҳбудиҳо, ба монанди қобилияти таблиғи модели қаблан омӯзонидашуда, ки дар он корбари ниҳоӣ бояд омӯзиши моделро дар маълумоти мушаххаси худ анҷом диҳад, инчунин оғози татбиқи омӯзиши мошинро осонтар мекунад. Ин пешрафтҳо омӯхтани омӯзиши мошинро ҳам барои мутахассисон ва ҳам барои ширкатҳо хеле осон мекунанд.
Аз тарафи дигар, мо бештар ва бештар маълумот ҷамъ мекунем. Бо як платформаи ягонаи додаҳо ба монанди InterSystems IRIS, ҳамаи ин маълумотро фавран омода кардан ва ҳамчун вуруд барои моделҳои омӯзиши мошин истифода бурдан мумкин аст.
Бо гузариш ба абр, оғози лоиҳаҳои AI/ML аз ҳарвақта осонтар аст. Мо метавонем танҳо захираҳои заруриро истеъмол кунем. Ғайр аз он, ба шарофати параллелизатсияи платформаҳои абрӣ, мо метавонем вақти беҳударо сарфа кунем.
Аммо дар бораи натиҷаҳо чӣ гуфтан мумкин аст? Дар ин ҷо корҳо мураккабтар мешаванд. Барои сохтани моделҳо асбобҳои зиёде мавҷуданд, ки ман дар оянда муҳокима хоҳам кард. Сохтани модели хуб осон нест, аммо баъд чӣ? Фоида аз истифодаи модели тиҷорӣ низ як кори ночиз аст. Решаи мушкилот ҷудоии сарбории кории таҳлилӣ ва транзаксионӣ ва моделҳои додаҳост. Вақте ки мо моделро таълим медиҳем, мо одатан онро аз рӯи маълумоти таърихӣ мекунем. Аммо ҷои модели сохташуда коркарди маълумотҳои транзаксионӣ мебошад. Беҳтарин модели ошкор кардани транзаксияҳои қаллобӣ чӣ фоида дорад, агар мо онро дар як рӯз як маротиба иҷро кунем? Қаллобон аллакай пулро партофта рафтанд. Мо бояд моделро дар бораи маълумоти таърихӣ омӯзем, аммо мо инчунин бояд онро дар вақти воқеӣ дар маълумоти нави воридшаванда истифода барем, то равандҳои тиҷоратии мо мувофиқи пешгӯиҳои модел амал кунанд.
ML Toolkit маҷмӯаи абзорест, ки маҳз ҳамин корро мекунад: якҷоя кардани моделҳо ва муҳити транзаксионӣ, то моделҳои сохтаатон мустақиман дар равандҳои тиҷоратии шумо истифода шаванд. Python Gateway як қисми Toolkit ML аст ва ҳамгироиро бо забони Python таъмин мекунад (монанд ба R Gateway, қисми ML Toolkit будан ҳамгироиро бо забони R таъмин мекунад).
Toolkit
Пеш аз он ки мо идома диҳем, ман мехоҳам чанд абзор ва китобхонаҳои Python-ро тавсиф кунам, ки мо дертар истифода хоҳем кард.
технология
- Python забони барномасозии тафсиршаванда, таъиноти умумӣ ва сатҳи баланд аст. Бартарии асосии забон китобхонаи калони риёзӣ, ML ва AI мебошад. Мисли ObjectScript, он забони ба объект нигаронидашуда аст, аммо ҳама чиз ба таври динамикӣ муайян карда мешавад, на статикӣ. Инчунин ҳама чиз объект аст. Мақолаҳои баъдӣ шиносоии гузаранда бо забонро дар назар доранд. Агар шумо хоҳед, ки омӯзишро оғоз кунед, ман тавсия медиҳам, ки аз он оғоз кунед
хуччатхо . - Барои машқҳои навбатии мо, муқаррар кунед
Python 3.6.7 64бит . - IDE: Ман истифода мекунам
PyCharm , балки умуманмного . Агар шумо Atelier-ро истифода баред, барои таҳиягарони Python як плагини Eclipse мавҷуд аст. Агар шумо VS Code-ро истифода баред, пас барои Python тамдид мавҷуд аст. - Ноутбук: Ба ҷои IDE, шумо метавонед скриптҳои худро дар дафтарҳои онлайн нависед ва мубодила кунед. Маъмултаринашон аз онҳост
Юпитер .
Китобхонаҳо
Ин аст рӯйхати (қисман) китобхонаҳои омӯзиши мошин:
Нумпӣ — маҷмӯи фундаменталӣ барои ҳисобҳои дақиқ.Пандас — сохторҳои баландсифати додаҳо ва воситаҳои таҳлили додаҳо.Матплотлиб - Эҷоди диаграммаҳо.Баҳри баҳр - визуализатсияи маълумот дар асоси matplotlib.Склерн — усулхои омузиши мошинхо.XGBoost — алгоритмҳои омӯзиши мошинсозӣ дар доираи методологияи Gradient Boosting.Генсим - NLP.Керас - шабакаҳои нейрон.Танзими ҷараён платформа барои сохтани моделҳои омӯзиши мошинсозӣ мебошад.PyTorch платформа барои эҷоди моделҳои омӯзиши мошинсозӣ, ки ба Python нигаронида шудааст.Нёка - PMML аз моделҳои гуногун.
Технологияҳои AI/ML тиҷоратро муассиртар ва мутобиқтар мекунанд. Гузашта аз ин, имрӯз ин технологияҳо таҳия ва татбиқи он осонтар мешаванд. Омӯзиш дар бораи технологияҳои AI/ML ва чӣ гуна онҳо метавонанд ба рушди созмони шумо кӯмак расонанд, оғоз кунед.
параметр
Якчанд роҳҳо барои насб ва истифодаи Python Gateway мавҷуданд:
- OS
- Windows
- Linux
- Мак
- Доктор
- Тасвирро аз DockerHub истифода баред
- Намуди шахсии худро эҷод кунед
Новобаста аз усули насб, ба шумо рамзи манбаъ лозим мешавад. Ягона ҷой барои зеркашӣ кардани код аст
OS
Агар шумо Python Gateway-ро дар системаи оператсионӣ насб карда бошед, пас аввал (новобаста аз системаи амалиётӣ) ба шумо лозим меояд, ки Python -ро насб кунед. Барои ин:
Python 3.6.7 64 бит насб кунед . Тавсия дода мешавад, ки Python-ро дар феҳристи пешфарз насб кунед.- Модулро насб кунед
dill
:pip install dill
. - Рамзи ObjectScript-ро зеркашӣ кунед (масалан.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)
) ба хар район бо махсулот. Агар шумо хоҳед, ки минтақаи мавҷуда барои дастгирии маҳсулот, иҷро кунед:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1)
. - Ҷой
занги DLL/SO/DYLIB ба папкаbin
намунаи InterSystems IRIS-и шумо. Файли китобхона бояд дар роҳи баргардонидашуда дастрас бошадwrite ##class(isc.py.Callout).GetLib()
.
Windows
- Боварӣ ҳосил кунед, ки тағирёбандаи муҳити зист аст
PYTHONHOME
ба Python 3.6.7 ишора мекунад. - Боварӣ ҳосил кунед, ки тағирёбандаи муҳити система аст
PATH
дорои як тағирёбанда астPYTHONHOME
(ё директорияе, ки ба он ишора мекунад).
Linux (Debian/Ubuntu)
- Санҷед, ки оё тағирёбандаи муҳити зист
PATH
дар бар мегирад/usr/lib
и/usr/lib/x86_64-linux-gnu
. Файлро истифода баред/etc/environment
барои муқаррар кардани тағирёбандаҳои муҳити зист. - Дар сурати хатохо
undefined symbol: _Py_TrueStruct
танзимотро таъин кунедPythonLib
. Инчунин дарReadme қисмати ҳалли мушкилот вуҷуд дорад.
Мак
- Дар айни замон танҳо python 3.6.7 аз дастгирӣ карда мешавад
python.org . Тағйирёбандаро тафтиш кунедPATH
.
Агар шумо тағирёбандаҳои муҳити зистро иваз карда бошед, маҳсулоти InterSystems-ро аз нав оғоз кунед.
Доктор
Истифодаи контейнерҳо як қатор афзалиятҳо дорад:
- Интиқолпазирӣ
- Самаранокии
- Ихтилофот
- сабукӣ
- Тағирнопазирӣ
Инро санҷед
Ҳама сохтани 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 intersystemcommunity/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 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
холӣ, тафтиш
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 алтернативаи бехатартар ва камтар маҳдудкунанда аст 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 4 роҳи ба даст овардани арзиши як тағирёбандаи Python вуҷуд дорад, вобаста ба силсиласозии ба шумо лозим аст:
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)
- маҷмӯи додаҳо эҷод мекунад (pandasdataframe
ё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
аз idstart
баend
дар Python ҳамчун тағирёбандаи навъиtype
:list
, ё пандаҳоdataframe
.properties
— рӯйхат (бо вергул ҷудо) хосиятҳои синф, ки ба маҷмӯи додаҳо бор карда мешаванд. Маскаҳо дастгирӣ карда мешаванд*
и?
. Пешфарз -*
(ҳама моликият). Амвол%%CLASSNAME
сарфи назар кард.ExecuteTable(table, variable, type, start, end, properties, namespace)
- маълумоти ҷадвалро бор мекунадtable
аз idstart
ба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
— Тамғаи вақт (сатри формати СОЛ-Моҳ-РӮЗ: СОАТ: ДАКИКА: ДУЮМ).
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 табдил дода мешаванд.
Ҷадвали иҷро
печонед 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,Мак ). Истифода баред%TimeStamp
барои интиқол додани маълумот берун аз ин диапазон ё истифодаи pandas dataframe ҳамчун ин маҳдудият танҳо барои рӯйхат аст. - барои
ExecuteGlobal
,ExecuteClass
иExecuteTable
ҳама далелҳо ба истиснои манбаи маълумот (глобалӣ, синф ё ҷадвал) ва тағирёбанда ихтиёрӣ мебошанд.
намунаи
синфи санҷишӣ
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
имкон медиҳад, ки ҳамкорӣ бо раванди Python аз маҳсулоти InterSystems IRIS. Панҷ дархост дастгирӣ карда мешавад:
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)
барои гирифтани арзиши шарҳи фаъолият бо номи он. Шарҳи фаъолият метавонад дорои тағирёбандаҳое бошад, ки пеш аз интиқол ба 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
.
Санҷиши раванди бизнес
Истеҳсоли санҷиш ва раванди тиҷорати санҷишӣ ба таври нобаёнӣ ҳамчун як қисми Gateway Python дастрас аст. Барои истифода бурдани онҳо:
- Дар терминали OS иҷро:
pip install pandas matplotlib seaborn
. - Дар терминали InterSystems IRIS, иҷро кунед:
do ##class(isc.py.test.CannibalizationData).Import()
барои пур кардани маълумоти тестӣ. - Маҳсулотро оғоз кунед
isc.py.test.Production
. - Навъи дархости ирсол
Ens.Request
вisc.py.test.Process
.
Биёед бубинем, ки ин ҳама якҷоя кор мекунад. Кушодан isc.py.test.Process
дар муҳаррири BPL:
Иҷрои код
Муҳимтарин занг иҷрои рамзи 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
:
Он матритсаи коррелятсияро дар тарафи Python ҳисоб мекунад ва тағирёбандаро хориҷ мекунад corrmat
баргаштан ба InterSystems IRIS дар формати JSON бо гузоштани хосиятҳои дархост:
Variables
:"corrmat"
Serialization
:"JSON"
Мо метавонем натиҷаҳоро дар Visual Trace бубинем:
Ва агар ба мо ин арзиш дар BP лозим бошад, онро метавон чунин ба даст овард: 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
дар амал нишон дода шудааст.
Захира/барқарор кардани контексти 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
— пеш аз барқарорсозӣ контекстро тоза кунед.
Дафтарчаи Юпитер
Ин васеъшавӣ тахмин мекунад, ки эзоҳҳо рамзи Python доранд ва номҳои фаъолиятро ҳамчун унвонҳои қаблӣ истифода мебаранд. Ҳоло дар Jupyter Notebook равандҳои тиҷоратии PythonGatewayро таҳия кардан мумкин аст. Ин аст он чизе ки имконпазир аст:
- Эҷоди равандҳои нави бизнес
- Равандҳои бизнесро нест кунед
- Фаъолиятҳои нав эҷод кунед
- Тағйир додани фаъолиятҳо
- Фаъолиятҳоро нест кунед
дар ин ҷо
Explorer раванд
Муҳаррири раванд
параметр
- Ба шумо InterSystems IRIS 2019.2+ лозим аст.
- PythonGateway v0.8+ насб кунед (танҳо
isc.py.util.Jupyter
,isc.py.util.JupyterCheckpoints
иisc.py.ens.ProcessUtils
). - Рамзи ObjectScript-ро аз анбор навсозӣ кунед.
- Иҷро кунед
do ##class(isc.py.util.Jupyter).Install()
ва дастурҳоро риоя кунед.
натиҷаҳои
MLToolkit маҷмӯи абзорҳоест, ки ҳадафи он омезиши моделҳо ва муҳити транзаксионӣ мебошад, то моделҳои сохташуда бевосита дар равандҳои тиҷоратии шумо ба осонӣ истифода шаванд. Python Gateway як қисми MLToolkit буда, ҳамгироиро бо забони Python таъмин мекунад, ки ба шумо имкон медиҳад, ки ҳама алгоритмҳои омӯзиши мошини дар Python сохташударо танзим кунед (муҳити асосӣ барои бисёре аз маълумотшиносон), китобхонаҳои сершумори омодаро барои зуд эҷод кардани AI-и аналитикии мутобиқшавӣ ва роботӣ истифода баред / Қарорҳои ML дар платформаи InterSystems IRIS.
мурожиат
Мақолаи қаблӣ Gateway Python Намунаҳои Gateway Python Таҳлили конвергентӣ Python 3.6.7 64бит Ҳуҷҷатҳои Python ва курсҳо
MLToolkit
Гурӯҳи корбарони MLToolkit як анбори хусусии GitHub мебошад, ки дар доираи ташкилоти корпоративии InterSystems GitHub сохта шудааст. Он ба корбарони беруна, ки ҷузъҳои MLToolkit-ро насб мекунанд, меомӯзанд ё аллакай истифода мебаранд, аз ҷумла Python Gateway. Гурӯҳ дорои як қатор парвандаҳои амалӣ (бо рамзи сарчашма ва маълумоти санҷишӣ) дар соҳаҳои маркетинг, истеҳсолот, тиб ва бисёр дигар соҳаҳо. Барои ҳамроҳ шудан ба гурӯҳи корбарони ML Toolkit, лутфан ба суроғаи зерин почтаи электронӣ фиристед:
- Номи корбари GitHub
- Ташкилот (шумо кор ё таҳсил мекунед)
- Мавқеъ (мавқеи воқеии шумо дар ташкилоти шумо, ё "Донишҷӯ" ё "Мустақил").
- кишвар
Барои онҳое, ки мақоларо хондаанд ва ба InterSystems IRIS ҳамчун платформаи таҳия ё ҷойгиркунии механизмҳои зеҳни сунъӣ ва омӯзиши мошинҳо таваҷҷӯҳ доранд, мо шуморо даъват мекунем, ки сенарияҳои эҳтимолии таваҷҷӯҳи корхонаи худро муҳокима кунед. Мо эҳтиёҷоти корхонаи шуморо бо омодагӣ таҳлил карда, якҷоя нақшаи чорабиниҳоро муайян мекунем; бо суроғаи почтаи электронии гурӯҳи коршиносони AI/ML-и мо тамос гиред -
Манбаъ: will.com