InterSystems IRISдеги Python Gateway

Бул макала Python Gateway жөнүндө, InterSystems IRIS маалымат платформасы үчүн ачык булактуу коомчулук долбоору. Бул долбоор Pythonдо (көптөгөн Маалымат Окумуштуулары үчүн негизги чөйрө) түзүлгөн каалаган машинаны үйрөнүү алгоритмдерин уюштурууга, InterSystems IRIS платформасында адаптацияланган, роботтук аналитикалык AI/ML чечимдерин тез түзүү үчүн көптөгөн даяр китепканаларды колдонууга мүмкүндүк берет. Бул макалада мен InterSystems IRIS кантип Python процесстерин уюштура аларын, эки тараптуу маалыматтарды эффективдүү өткөрүүнү жана интеллектуалдык бизнес процесстерди түзө аларын көрсөтөм.

план

  1. Киришүү.
  2. Куралдар.
  3. Орнотуу.
  4. API.
  5. Өз ара аракеттенүү.
  6. Юпитер дептери.
  7. Корутунду.
  8. Шилтемелер.
  9. MLToolkit.

тааныштыруу

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 Code колдонуп жатсаңыз, анда Python үчүн кеңейтүү бар.
  • Блокнот: IDE ордуна, сиз скрипттериңизди онлайн дептерлерге жазып, бөлүшө аласыз. Алардын эң популярдуусу Юпитер.

китепканалар

Бул жерде машина үйрөнүү китепканаларынын (жарым-жартылай) тизмеси:

  • Напси — так эсептөөлөр үчүн негизги пакет.
  • рттъ — жогорку натыйжалуу маалымат структуралары жана маалыматтарды талдоо куралдары.
  • matplotlib - Диаграммаларды түзүү.
  • деңиз туулган - matplotlib негизинде маалыматтарды визуализациялоо.
  • Sklearn — машина менен окутуунун методдору.
  • XGBoost — Gradient Boosting методологиясынын алкагында машина үйрөнүү алгоритмдери.
  • Gensim — NLP.
  • кызыл - нейрон тармактары.
  • тензордук агым машина үйрөнүү моделдерин түзүү үчүн платформа болуп саналат.
  • PyTorch Python'го багытталган машина үйрөнүү моделдерин түзүү үчүн платформа.
  • Nyoka - ар кандай моделдерден 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. Place callout 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. Variable текшерүү PATH.

Эгерде сиз чөйрө өзгөрмөлөрүн өзгөрткөн болсоңуз, InterSystems продуктуну кайра иштетиңиз.

ютуб

Контейнерлерди колдонуу бир катар артыкчылыктарга ээ:

  • Portability
  • натыйжалуулугу
  • бөлүп коюу
  • жеңилдик
  • Өзгербестик

Муну текшерип көрүңүз макалалардын сериясы InterSystems өнүмдөрү менен Dockerди колдонуу боюнча көбүрөөк маалымат алуу үчүн.

Бардык Python Gateway курулуштары учурда контейнерге негизделген. 2019.4.

Даяр сүрөт

чуркоо: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestInterSystems IRIS Community Edition менен Python Gatewayти жүктөп алуу жана иштетүү. Баары болду.

Өзүңүздүн образыңызды түзүңүз

Докер сүрөтүн түзүү үчүн, репозиторийдин түбүндө иштетиңиз: 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 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 негизиндеги сүрөттү колдонуп жатсаңыз, ачкычты көрсөтүүнүн кереги жок.

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 — Көйгөйлөрдү чечүү бөлүмү.

API

Python Gateway орнотулду жана сиз анын иштеп жатканын ырастадыңыз. Аны колдонууга убакыт келди!
Python үчүн негизги интерфейс болуп саналат isc.py.Main. Бул ыкмалардын төмөнкү топторун сунуш кылат (баары кайтарып берет %Status):

  • Коддун аткарылышы
  • маалыматтарды берүү
  • Бажыга байланыштуу

Коддун аткарылышы

Бул ыкмалар сиз каалаган Python кодун аткарууга мүмкүндүк берет.

SimpleString

SimpleString негизги ыкмасы болуп саналат. Ал 4 кошумча аргументти талап кылат:

  • code аткаруу үчүн код сап болуп саналат. Сап түрмөгүнүн символу: $c(10).
  • returnVariable кайтарыла турган өзгөрмөнүн аты.
  • serialization - кантип сериялаштыруу керек returnVariable. 0 - сап (демейки), 1 - repr.
  • 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) -Өзгөрмөнүн туздалган (же укроп) сериализациясын алыңыз.

Келгиле, өзгөрмөбүздү алганга аракет кылалы 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 id тартып start үчүн end Python түрүндөгү өзгөрмө катары type: list, же пандалар dataframe. properties — маалымат топтомуна жүктөлө турган класс касиеттеринин тизмеси (үтүр менен бөлүнгөн). Маскалар колдоого алынат * и ?. Демейки - * (бардык касиеттери). Менчик %%CLASSNAME этибарга алынбаган.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - таблица маалыматтарын жүктөйт table id тартып 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 - баштапкы 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 жана OS көз карандытерезелер: 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 контекст 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.

Бизнес процессин сыноо

Сыноо өндүрүшү жана сыноо бизнес процесси демейки боюнча 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 редакторунда:

InterSystems IRISдеги Python Gateway

Коддун аткарылышы

Эң маанилүү чакыруу Python кодунун аткарылышы:

InterSystems IRISдеги Python Gateway

Сурам колдонулат 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 Gateway

Ал Python тарабындагы Корреляция матрицасын эсептеп, өзгөрмөлөрдү чыгарат corrmat Сурамдын касиеттерин орнотуу менен JSON форматында InterSystems IRISке кайтыңыз:

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

Биз Visual Trace натыйжаларын көрө алабыз:

InterSystems IRISдеги Python Gateway

Эгерде бизге 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 аракетте көрсөтүлгөн.

InterSystems IRISдеги Python Gateway

Python контекстти сактоо/калыбына келтирүү

Акыр-аягы, биз InterSystems IRISте Python контекстин сактай алабыз, бул үчүн жөнөтүңүз isc.py.msg.SaveRequest аргументтер менен:

  • Mask — Масканы канааттандырган өзгөрмөлөр гана сакталат. Колдоого алынган * и ?... Мисалы: "Data*, Figure?"... Демейки *.
  • MaxLength — Сакталган өзгөрмөнүн максималдуу узундугу. Эгерде өзгөрмөнүн сериализациясы узунураак болсо, анда ага көңүл бурулбайт. Каалаган узундуктагы өзгөрмөлөрдү алуу үчүн 0 коюңуз. Демейки $$$MaxStringLength.
  • Name — Контексттин аталышы (милдеттүү эмес).
  • Description — Контексттин сүрөттөлүшү (милдеттүү эмес).

Returns Ens.StringResponse с Id сакталган контекст. Сыноо процессинде аракетти караңыз Save Context.

Тиешелүү өтүнүч isc.py.msg.RestoreRequest InterSystems IRISтен контекстти Pythonго жүктөйт:

  • ContextId контексттин идентификатору болуп саналат.
  • Clear — калыбына келтирүүдөн мурун контекстти тазалаңыз.

Jupyter дептери

Jupyter дептери коду, визуализациясы жана тексти камтыган дептерлерди түзүүгө жана жарыялоого мүмкүндүк берген ачык булактуу веб-тиркеме. Python Gateway BPL процесстерин Jupyter Notebook катары көрүүгө жана түзөтүүгө мүмкүндүк берет. Белгилей кетсек, учурда кадимки Python 3 аткаруучусу колдонулуп жатат.

Бул кеңейтүү аннотациялар Python кодун камтыйт жана мурунку аталыштар катары иш-аракеттердин аталыштарын колдонот деп болжолдойт. Азыр Jupyter Notebook'та PythonGateway бизнес процесстерин иштеп чыгуу мүмкүн. Бул жерде эмне мүмкүн:

  • Жаңы бизнес процесстерин түзүү
  • Бизнес процесстерин жок кылуу
  • жаңы иш-аракеттерди түзүү
  • Иш-аракеттерди өзгөртүү
  • Аракеттерди жок кылуу

бул жерде демо видео. Жана кээ бир скриншоттор:

Process Explorer

InterSystems IRISдеги Python Gateway

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

InterSystems IRISдеги Python Gateway

жөндөө

  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ди тез түзүү үчүн көптөгөн даяр китепканаларды колдонууга мүмкүндүк берет. InterSystems IRIS платформасында ML чечимдери.

шилтемелер

MLToolkit

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

  • GitHub колдонуучу аты
  • Уюм (сиз иштейсиз же окуйсуз)
  • Позиция (сиздин уюмуңуздагы "Студенттик" же "Көз карандысыз" иш жүзүндөгү позицияңыз).
  • мамлекет

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

Source: www.habr.com

Комментарий кошуу