Python Gateway di InterSystems IRIS

Artikel ieu ngeunaan Python Gateway, proyék komunitas open source pikeun platform data InterSystems IRIS. Proyék ieu ngamungkinkeun anjeun pikeun ngatur algoritma pembelajaran mesin anu diciptakeun dina Python (lingkungan utama pikeun seueur Data Élmuwan), ngagunakeun seueur perpustakaan anu siap-siap pikeun gancang nyiptakeun solusi AI / ML analitik robotic adaptif dina platform InterSystems IRIS. Dina tulisan ieu, kuring bakal nunjukkeun kumaha InterSystems IRIS tiasa ngatur prosés dina Python, éfisién komunikasi data dua arah, sareng nyiptakeun prosés bisnis anu cerdas.

Rencanana

  1. Bubuka.
  2. Parabot.
  3. Pamasangan.
  4. API.
  5. Interoperabilitas.
  6. Notebook Jupyter.
  7. Conclusions.
  8. Tumbu.
  9. MLToolkit.

perkenalan

Python mangrupikeun basa pamrograman tingkat luhur, tujuan umum anu ditujukeun pikeun ningkatkeun produktivitas pamekar sareng kabacaan kode. Dina séri artikel ieu, kuring bakal ngabahas kamungkinan ngagunakeun Python dina platform InterSystems IRIS, kalayan fokus utama tulisan ieu nyaéta ngagunakeun Python salaku basa pikeun nyiptakeun sareng ngajalankeun modél pembelajaran mesin.

Pembelajaran mesin (ML) mangrupikeun kelas metode intelijen buatan, anu ciri anu sanés mangrupikeun solusi langsung tina masalah, tapi diajar dina prosés ngarengsekeun seueur masalah anu sami.

Algoritma sareng modél pembelajaran mesin janten langkung umum. Aya seueur alesan pikeun ieu, tapi éta sadayana turun kana aksésibilitas, kesederhanaan sareng ngahontal hasil praktis. Naha clustering atanapi bahkan model jaringan saraf mangrupikeun téknologi énggal?

Tangtosna henteu, tapi ayeuna henteu kedah nyerat ratusan rébu garis kode pikeun ngajalankeun modél tunggal, sareng biaya nyiptakeun sareng ngagunakeun modél janten sakedik.

Parabot ngembang - bari urang teu boga pinuh GUI-centric AI / ML parabot, kamajuan urang geus katempo ku loba kelas séjén sistem informasi, kayaning BI (ti nulis kode nepi ka ngagunakeun frameworks na GUI-centric solusi configurable), nyaeta. ogé dititénan dina parabot pikeun nyieun AI / ML. Kami parantos ngalangkungan tahapan nyerat kode sareng ayeuna kami nganggo kerangka pikeun ngawangun sareng ngalatih modél.

Perbaikan sanésna, sapertos kamampuan pikeun ngadistribusikaeun modél anu tos dilatih dimana pangguna akhir ngan saukur kedah ngabéréskeun palatihan modél dina data khususna, ogé ngagampangkeun pikeun ngamimitian diajar mesin. Kamajuan ieu ngajantenkeun diajar mesin diajar langkung gampang pikeun profésional sareng perusahaan umumna.

Di sisi anu sanésna, kami ngumpulkeun langkung seueur data. Kalayan platform data ngahiji sapertos InterSystems IRIS, sadaya inpormasi ieu tiasa langsung disiapkeun sareng dianggo salaku input pikeun modél pembelajaran mesin.

Kalayan pindah ka awan, ngaluncurkeun proyék AI / ML janten langkung gampang ti kantos. Urang ukur bisa meakeun sumberdaya urang butuh. Sumawona, hatur nuhun kana parallelization ditawarkeun ku platform awan, urang tiasa ngahemat waktos spent.

Tapi kumaha hasilna? Ieu tempat hal jadi leuwih pajeulit. Aya seueur alat pikeun ngawangun modél, anu bakal kuring bahas salajengna. Ngawangun modél anu saé henteu gampang, tapi kumaha salajengna? Ngahasilkeun kauntungan tina ngagunakeun modél bisnis ogé mangrupikeun tugas anu henteu sepele. Akar masalahna nyaéta pamisahan beban kerja analitis sareng transaksional, sareng modél data. Nalika urang ngalatih modél, urang biasana ngalakukeun dina data sajarah. Tapi tempat pikeun modél anu diwangun nyaéta dina ngolah data transaksional. Naon gunana modél deteksi transaksi curang anu pangsaéna upami urang ngajalankeunana sakali sapoé? The scammers geus lila ditinggalkeun mawa duit. Urang kedah ngalatih modél dina data sajarah, tapi urang ogé kedah nerapkeunana sacara real waktos dina data énggal anu énggal supados prosés bisnis urang tiasa ngalaksanakeun prediksi anu dilakukeun ku modél.

ML Toolkit mangrupikeun sakumpulan alat anu tujuanana pikeun ngalakukeun éta: ngahijikeun modél sareng lingkungan transaksional supados modél anu diwangun tiasa gampang dianggo langsung dina prosés bisnis anjeun. Python gateway mangrupa bagian tina ML Toolkit jeung nyadiakeun integrasi jeung basa Python (sarupa kumaha R gateway, jadi bagian tina ML Toolkit nyadiakeun integrasi jeung basa Sunda).

Parabot

Sateuacan urang neraskeun, Abdi hoyong ngajelaskeun sababaraha alat Python sareng perpustakaan anu bakal kami anggo engké.

téknologi

  • Python mangrupikeun basa pamrograman anu diinterpretasi, tingkat luhur, tujuan umum. Kauntungan utama basa nyaéta perpustakaan matematika, ML sareng AI anu ageung. Sapertos ObjectScript, éta mangrupikeun basa anu berorientasi obyék, tapi sadayana dihartikeun sacara dinamis tinimbang statis. Ogé sagalana mangrupa obyék. Engké artikel nganggap familiarity ngaliwatan basa. Upami anjeun hoyong ngamimitian diajar, kuring nyarankeun dimimitian ku dokuméntasi.
  • Pikeun latihan salajengna urang, set Python 3.6.7 64 saeutik.
  • IDE: Kuring make PyCharm, tapi sacara umum aranjeunna много. Upami anjeun nganggo Atelier, aya plugin Eclipse pikeun pamekar Python. Upami anjeun nganggo VS Code, aya ekstensi pikeun Python.
  • Notebook: Gantina IDE, anjeun tiasa nyerat sareng ngabagi skrip anjeun dina buku catetan online. Nu pang populerna di antarana nyaéta jupyter.

Perpustakaan

Ieu daptar (henteu lengkep) perpustakaan mesin learning:

  • numpy - pakét dasar pikeun itungan anu tepat.
  • pandas - struktur data kinerja luhur sareng alat analisis data.
  • matplotlib - nyiptakeun grafik.
  • Laut laut - visualisasi data dumasar kana matplotlib.
  • Sklearn - métode learning mesin.
  • XGBoost - Algoritma pembelajaran mesin dina kerangka metodologi ningkatkeun gradién.
  • Gensim - NLP.
  • Keras - jaringan saraf.
  • Aliran tensor - platform pikeun nyieun modél pembelajaran mesin.
  • PyTorch nyaéta platform pikeun nyieun model pembelajaran mesin, fokus kana Python.
  • Nyoka - PMML tina sababaraha model.

Téknologi AI/ML ngajantenkeun bisnis langkung éfisién sareng adaptasi. Sumawona, ayeuna téknologi ieu janten langkung gampang dikembangkeun sareng diimplementasikeun. Mimitian diajar ngeunaan téknologi AI/ML sareng kumaha aranjeunna tiasa ngabantosan organisasi anjeun tumbuh.

setting

Aya sababaraha cara pikeun masang sareng nganggo Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Anggo gambar tina DockerHub
    • Jieun katingal anjeun sorangan

Henteu paduli metode pamasangan, anjeun peryogi kode sumber. Hiji-hijina tempat pikeun ngundeur kode téh kaca release. Éta ngandung sékrési stabil anu diuji, ngan ukur anu énggal. Di momen éta 0.8, tapi kana waktu bakal aya nu anyar. Ulah clone / ngundeur gudang, undeur release panganyarna.

OS

Upami anjeun masang Python Gateway dina sistem operasi, maka mimitina (paduli sistem operasi) anjeun kedah masang Python. Kanggo ieu:

  1. Install Python 3.6.7 64 saeutik. Disarankeun masang Python dina diréktori standar.
  2. Pasang modul dill: pip install dill.
  3. Unduh kodeu ObjectScript (ie. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ka wewengkon mana wae nu mibanda produk. Upami anjeun hoyong daérah anu tos aya pikeun ngadukung produk, jalankeun: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Tempat callout DLL/SO/DYLIB kana map bin conto InterSystems IRIS anjeun. file perpustakaan kudu sadia dina jalur balik write ##class(isc.py.Callout).GetLib().

Windows

  1. Pastikeun variabel lingkungan PYTHONHOME nunjuk ka Python 3.6.7.
  2. Pastikeun variabel lingkungan sistem PATH ngandung variabel PYTHONHOME (atanapi diréktori anu ditunjuk).

Linux (Debian/Ubuntu)

  1. Pariksa yén variabel lingkungan nyaéta PATH ngandung /usr/lib и /usr/lib/x86_64-linux-gnu. Paké file /etc/environment pikeun nyetel variabel lingkungan.
  2. Bisi aya kasalahan undefined symbol: _Py_TrueStruct nyetel setelan PythonLib. oge di readme aya bagian Troubleshooting.

Mac

  1. Ayeuna ngan Python 3.6.7 dirojong python.org. Pariksa variabel PATH.

Upami anjeun ngarobih variabel lingkungan, balikan deui produk InterSystems anjeun.

Docker

Ngagunakeun wadahna boga sababaraha kaunggulan:

  • Portability
  • éféktivitas
  • penyekatan
  • énténg
  • Immutability

Pariksa ieu runtuyan artikel kanggo inpormasi anu langkung lengkep ihwal ngagunakeun Docker sareng produk InterSystems.

Kabéh Python Gateway ngawangun ayeuna wadahna dumasar 2019.4.

Gambar siap

ngajalankeun: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestpikeun ngundeur tur ngajalankeun Python Gateway kalawan InterSystems IRIS Komunitas Edition. Éta hungkul.

Jieun katingal anjeun sorangan

Pikeun ngawangun gambar docker, jalankeun dina akar gudang: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Sacara standar, gambar diwangun dumasar kana gambar store/intersystems/iris-community:2019.4.0.383.0, Tapi anjeun bisa ngarobah ieu ku netepkeun variabel IMAGE.
Pikeun ngawangun ti InterSystems IRIS, jalankeun: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy: latest ".

Saatos ieu anjeun tiasa ngajalankeun gambar docker:

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

Upami anjeun nganggo gambar dumasar kana InterSystems IRIS Community Edition, anjeun tiasa ngaleungitkeun konci éta.

koméntar

  • Prosés tés isc.py.test.Process nyimpen sababaraha gambar ka diréktori samentara. Anjeun meureun hoyong ngarobah jalur ieu ka diréktori dipasang. Jang ngalampahkeun ieu, edit setelan WorkingDir nangtukeun diréktori dipasang.
  • Pikeun ngakses terminal ngajalankeun: docker exec -it irispy sh.
  • Aksés ka Portal Manajemén Sistem ku login SuperUser/SYS.
  • Pikeun ngeureunkeun wadahna, jalankeun: docker stop irispy && docker rm --force irispy.

Verifikasi pamasangan

Sakali anjeun tos dipasang Python Gateway, éta patut pariksa yen eta jalan. Jalankeun kode ieu dina terminal InterSystems IRIS:

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

hasilna kedah kieu: HELLO - Nilai variabel Python x. Lamun status mulang sc mangrupa kasalahan atawa var kosong, cek Readme - Bagian ngungkulan.

API

Python gateway dipasang jeung anjeun geus diverifikasi yén gawéna. Waktosna pikeun ngamimitian ngagunakeunana!
Antarbeungeut utama pikeun Python nyaéta isc.py.Main. Ieu nawiskeun grup metode di handap ieu (sadayana balik %Status):

  • Kode Palaksanaan
  • Mindahkeun data
  • Pambantu

Kode Palaksanaan

Metoda ieu ngidinan Anjeun pikeun ngaéksekusi kode Python sawenang.

SimpleString

SimpleString - ieu métode utama. Butuh 4 argumen pilihan:

  • code - garis kode pikeun ngaéksekusi. Karakter feed garis: $c(10).
  • returnVariable - ngaran variabel pikeun balik.
  • serialization - kumaha serialize returnVariable. 0 - string (standar), 1 - repr.
  • result - Rujukan ByRef kana variabel anu nilaina ditulis returnVariable.

Di luhur urang ngalakukeun:

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

Dina conto ieu, urang napelkeun ka variabel Python x harti Hello sarta rék balik nilai variabel Python x kana variabel ObjectScript var.

ExecuteCode

ExecuteCode mangrupikeun alternatif anu langkung aman sareng kirang restrictive SimpleString.
Garis dina platform InterSystems IRIS dugi ka 3 karakter, sareng upami anjeun hoyong ngaéksekusi kode anu langkung panjang, anjeun kedah nganggo benang.
Dua argumen anu ditarima:

  • code - garis atawa aliran kode Python bakal dieksekusi.
  • variable - (opsional) napelkeun hasil palaksanaan code variabel Python ieu.

Conto ngagunakeun:

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

Dina conto ieu, urang kalikeun 2 ku 3 jeung nulis hasilna kana variabel Python y.

Mindahkeun data

Pas data ka sareng ti Python.

Python -> InterSystems IRIS

Aya 4 cara pikeun kéngingkeun nilai variabel Python dina InterSystems IRIS, gumantung kana serialisasi anu anjeun peryogikeun:

  • String pikeun tipe data basajan tur debugging.
  • Repr pikeun nyimpen objék basajan tur debugging.
  • JSON pikeun manipulasi data gampang dina sisi InterSystems IRIS.
  • Pickle pikeun nyimpen objék.

Métode ieu ngamungkinkeun anjeun nyandak variabel tina Python salaku senar atanapi aliran.

  • GetVariable(variable, serialization, .stream, useString) - meunang serialization variabel variable в stream. Upami useString mangrupa 1 sarta serialization ieu disimpen dina senar a, lajeng string a balik teu stream a.
  • GetVariableJson(variable, .stream, useString) - kéngingkeun serialisasi JSON tina variabel.
  • GetVariablePickle(variable, .stream, useString, useDill) -meunang acar (atanapi Dill) serialization variabel.

Hayu urang coba pikeun meunangkeun variabel urang y.

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

InterSystems IRIS -> Python

Ngamuat data tina InterSystems IRIS kana Python.

  • ExecuteQuery(query, variable, type, namespace) - nyiptakeun set data (pandas dataframe atawa list) tina query sql sareng nyetél kana variabel Python variable. Kantong plastik isc.py kudu sadia di wewengkon namespace - pamundut bakal dieksekusi dinya.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - beban data global global tina langganan start ka end dina Python salaku variabel tipe type: list, atawa panda dataframe. Pedaran argumen pilihan mask jeung labels sayogi dina dokuméntasi kelas sareng gudang Dokumén Transfer Data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - ngamuat data kelas class ti id start ka end dina Python salaku variabel tipe type: list, atawa panda dataframe. properties - daptar (dipisahkeun ku koma) sipat kelas nu kudu dimuat kana set data. Topeng dirojong * и ?. Default - * (sagala sipat). Harta %%CLASSNAME teu dipaliré.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - ngamuat data tabel table ti id start ka end dina Python.

ExecuteQuery - universal (sakur query SQL bener bakal dibikeun ka Python). Sanajan kitu, ExecuteGlobal jeung bungkusna ExecuteClass и ExecuteTable dianggo kalayan sababaraha larangan. Aranjeunna langkung gancang (3-5 kali langkung gancang tibatan supir ODBC sareng 20 kali langkung gancang ExecuteQuery). Inpo leuwih lengkep di Dokumén Transfer Data.
Sadaya metode ieu ngadukung transfer data ti daérah mana waé. Kantong plastik isc.py kudu sadia di wewengkon sasaran.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - nransferkeun hasil naon waé query SQL anu leres ka Python. Ieu mangrupikeun metode transfer data anu paling laun. Anggo upami ExecuteGlobal sarta wrappers na teu sadia.

Argumen:

  • query - pamundut sql.
  • variable - nami variabel Python dimana datana ditulis.
  • type - list atawa Pandas dataframe.
  • namespace - wewengkon dimana pamundut bakal dieksekusi.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - ngalirkeun global di Python.

Argumen:

  • global - ngaran global tanpa ^
  • variable - nami variabel Python dimana datana ditulis.
  • type - list atawa Pandas dataframe.
  • start - langganan munggaran global. kuduna %Integer.
  • end - langganan panungtungan global. kuduna %Integer.
  • mask - topeng nilai global. Topeng tiasa langkung pondok tibatan jumlah widang di global (dina hal éta widang di tungtung bakal dilewatan). Kumaha pormat masker:
    • + lulus nilai sakumaha anu kasebut.
    • - nilai skip.
    • b - Tipe Boolean (0 - False, kabéh sésana - True).
    • d — Tanggal (tina $horolog, dina Windows ti 1970, dina Linux ti 1900).
    • t - Waktos ($horolog, detik sanggeus tengah wengi).
    • m — Stempel waktos (format string YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
  • labels — %Daptar ngaran kolom. Unsur kahiji nyaeta nami subscript.
  • namespace - wewengkon dimana pamundut bakal dieksekusi.

ExecuteClass

Bungkus deui ExecuteGlobal. Dumasar kana definisi kelas, nyiapkeun sauran ExecuteGlobal sarta nelepon anjeunna.

ExecuteClass(class, variable, type, start, end, properties, namespace) - ngalirkeun data kelas di Python.

Argumen:

  • class - ngaran kelas
  • variable - nami variabel Python dimana datana ditulis.
  • type - list atawa Pandas dataframe.
  • start - ngamimitian ID.
  • end - Id ahir
  • properties - daptar (dipisahkeun ku koma) sipat kelas nu kudu dimuat kana set data. Topeng dirojong * и ?. Default - * (sagala sipat). Harta %%CLASSNAME teu dipaliré.
  • namespace - wewengkon dimana pamundut bakal dieksekusi.

Sadaya sipat anu diliwatan sakumaha anu iwal tipe sipat %Date, %Time, %Boolean и %TimeStamp - aranjeunna dirobah jadi kelas Python pakait.

ExecuteTable

Bungkus deui ExecuteClass. Narjamahkeun nami tabel kana nami kelas sareng telepon ExecuteClass. tanda tangan:

ExecuteTable(table, variable, type, start, end, properties, namespace) - ngalirkeun data tabel ka Python.

Argumen:

  • table - ngaran méja.
    Sadaya argumen anu sanés disayogikeun ExecuteClass.

Catetan

  • ExecuteGlobal, ExecuteClass и ExecuteTable gawéna sarua gancang.
  • ExecuteGlobal 20 kali leuwih gancang ti ExecuteQuery dina set data badag (waktu mindahkeun> 0.01 detik).
  • ExecuteGlobal, ExecuteClass и ExecuteTable dianggo dina globals kalawan struktur ieu: ^global(key) = $lb(prop1, prop2, ..., propN) di mana key - hiji integer.
  • keur ExecuteGlobal, ExecuteClass и ExecuteTable rentang dirojong tina nilai %Date pakait jeung rentang mktime sareng gumantung kana OS (jandela: 1970-01-01, linux 1900-01-01, Mac). Paké %TimeStamppikeun mindahkeun data luar rentang ieu atawa ngagunakeun pandas dataframe sabab ieu mangrupa watesan daptar wungkul.
  • keur ExecuteGlobal, ExecuteClass и ExecuteTable kabéh argumen iwal sumber data (global, kelas atawa tabel) jeung variabel anu pilihan.

conto

Kelas tés isc.py.test.Person ngandung metodeu anu nunjukkeun sadaya pilihan transfer data:

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)

Nelepon métode do ##class(isc.py.test.Person).Test() pikeun ningali kumaha sadaya metode transfer data jalan.

Métode Helper

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - Kéngingkeun inpormasi ngeunaan variabel: naha éta ditetepkeun, kelasna sareng panjangna serialisasi.
  • GetVariableDefined(variable, .defined) - naha variabel diartikeun.
  • GetVariableType(variable, .type) - meunang kelas variabel.
  • GetStatus() - meunang jeung cabut iwal panungtungan di sisi Python.
  • GetModuleInfo(module, .imported, .alias) - Kéngingkeun variabel modul sareng status impor.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - meunang informasi ngeunaan fungsi.

Interoperabilitas

Anjeun parantos diajar kumaha nelepon Python Gateway tina terminal, ayeuna hayu urang mimitian nganggo éta dina produksi. Dasar pikeun berinteraksi sareng Python dina modeu ieu nyaéta isc.py.ens.Operation. Éta ngamungkinkeun urang:

  • Ngaéksekusi kode dina Python
  • Simpen / Mulangkeun konteks Python
  • Muat sareng nampi data tina Python

Dasarna, operasi Python mangrupa wrapper leuwih isc.py.Main. Operasi isc.py.ens.Operation nyadiakeun kamampuhan pikeun berinteraksi sareng prosés Python tina produk InterSystems IRIS. Lima patarosan dirojong:

  • isc.py.msg.ExecutionRequest pikeun ngaéksekusi kode Python. Mulih isc.py.msg.ExecutionResponse kalayan hasil palaksanaan sareng nilai-nilai variabel anu dipénta.
  • isc.py.msg.StreamExecutionRequest pikeun ngaéksekusi kode Python. Mulih isc.py.msg.StreamExecutionResponse hasil palaksanaan sareng nilai-nilai variabel anu dipénta. Analogna isc.py.msg.ExecutionRequest, tapi narima jeung mulangkeun aliran tinimbang string.
  • isc.py.msg.QueryRequest pikeun ngirimkeun hasil tina ngajalankeun query SQL. Mulih Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest pikeun ngalirkeun data global / kelas / méja. Mulih Ens.Response.
  • isc.py.msg.SaveRequest pikeun nyimpen konteks Python. Mulih Ens.StringResponse kalawan ID konteks.
  • isc.py.msg.RestoreRequest pikeun mulangkeun konteks Python.

    Sajaba ti éta, isc.py.ens.Operation gaduh dua setélan:

    • Initializer - milih kelas anu ngalaksanakeun panganteur isc.py.init.Abstract. Éta tiasa dianggo pikeun ngamuat fungsi, modul, kelas, jsb. Éta dilaksanakeun sakali nalika prosésna dimimitian.
    • PythonLib - (Linux hungkul) upami anjeun ningali kasalahan nalika ngamuat, setel nilaina libpython3.6m.so atawa malah dina jalur pinuh ka perpustakaan Python.

Nyiptakeun prosés bisnis

Aya dua kelas sadia nu ngagampangkeun ngembangkeun prosés bisnis:

  • isc.py.ens.ProcessUtils ngamungkinkeun anjeun nimba anotasi tina kagiatan kalayan substitusi variabel.
  • isc.py.util.BPEmulator ngajadikeun eta gampang pikeun nguji prosés bisnis jeung Python. Éta tiasa ngalaksanakeun prosés bisnis (bagian Python) dina prosés ayeuna.

Substitusi Variabel

Sadaya prosés bisnis diwariskeun ti isc.py.ens.ProcessUtils, tiasa nganggo metodeu GetAnnotation(name) pikeun meunangkeun nilai annotation aktivitas ku ngaranna. Anotasi kagiatan tiasa ngandung variabel anu bakal diitung dina sisi InterSystems IRIS sateuacan dialihkeun ka Python. Ieu sintaksis pikeun substitusi variabel:

  • ${class:method:arg1:...:argN} - métode panggero
  • #{expr} — ngajalankeun kode dina basa ObjectScript.

Hiji conto sadia dina prosés bisnis test isc.py.test.Process, contona, dina kagiatan Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Dina conto ieu:

  • #{process.WorkDirectory} mulih sipat WorkDirectory obyék process, nu mangrupa conto tina kelas isc.py.test.Process jelema. prosés bisnis ayeuna.
  • ${%PopulateUtils:Integer:1:100} nelepon métode Integer класса %PopulateUtils, ngalirkeun argumen 1 и 100, mulangkeun integer acak dina rentang 1...100.

Nguji prosés bisnis

Produk tés sareng prosés bisnis tés sayogi sacara standar salaku bagian tina Gateway Python. Pikeun ngagunakeunana:

  1. Dina terminal OS, jalankeun: pip install pandas matplotlib seaborn.
  2. Dina terminal InterSystems IRIS, jalankeun: do ##class(isc.py.test.CannibalizationData).Import() pikeun ngeusian data tés.
  3. produk peluncuran isc.py.test.Production.
  4. Kirimkeun jinis pamundut Ens.Request в isc.py.test.Process.

Hayu urang tingali kumaha gawéna babarengan. Buka isc.py.test.Process dina editor BPL:

Python Gateway di InterSystems IRIS

Kode Palaksanaan

Tangtangan anu paling penting nyaéta ngalaksanakeun kode Python:

Python Gateway di InterSystems IRIS

Patarosan dipaké isc.py.msg.ExecutionRequest, ieu ciri-cirina:

  • Code - Kodeu Python.
  • SeparateLines - naha ngabagi kode kana garis pikeun palaksanaan. $c(10) (n) dipaké pikeun misahkeun string. Punten dicatet yén NOT dianjurkeun pikeun ngolah sakabéh pesen sakaligus, fungsi ieu ngan dimaksudkeun pikeun ngolah def jeung éksprési multiline sarupa. Default 0.
  • Variables - daptar variabel anu dipisahkeun koma anu bakal ditambah kana réspon.
  • Serialization - Kumaha serialize variabel nu urang rék balik. Pilihan: Str, Repr, JSON, Pickle и Dill, standar Str.

Dina kasus urang, urang ngan nyetel harta Code, jadi sakabeh sipat séjén ngagunakeun nilai standar. Urang nyetél éta ku nelepon process.GetAnnotation("Import pandas"), nu dina runtime mulih annotation sanggeus substitusi variabel geus dipigawé. Barina ogé, kode import pandas as pd bakal dibikeun ka Python. GetAnnotation bisa jadi mangpaat pikeun ménta Aksara Python multi-garis, tapi euweuh larangan dina metoda ieu pikeun meunangkeun kode. Anjeun tiasa nyetél harta Code dina sagala cara merenah pikeun anjeun.

Meunangkeun Variabel

tantangan sejen metot ngagunakeun isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway di InterSystems IRIS

Éta ngitung Matrix Korélasi dina sisi Python sareng ékstrak variabel corrmat balik deui ka InterSystems IRIS dina format JSON ku netepkeun sipat pamundut:

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

Urang tiasa ningali hasil dina Visual Trace:

Python Gateway di InterSystems IRIS

Sareng upami urang peryogi nilai ieu dina BP, urang tiasa kéngingkeun sapertos kieu: callresponse.Variables.GetAt("corrmat").

Mindahkeun data

Salajengna, hayu urang ngobrol ngeunaan nransferkeun data tina InterSystems IRIS ka Python; sadaya pamundut pikeun mindahkeun data ngalaksanakeun antarmuka. isc.py.msg.DataRequestnu nyadiakeun sipat handap:

  • Variable - variabel Python dimana data ditulis.
  • Type - tipe variabel: dataframe (pandas dataframe) atawa list.
  • Namespace - wewengkon ti mana kami narima data. Kantong plastik isc.py kudu sadia di wewengkon ieu. Ieu bisa jadi wewengkon tanpa rojongan produk.

Dumasar panganteur ieu, 4 kelas requests dilaksanakeun:

  • isc.py.msg.QueryRequest - Nyetél harta Query pikeun ngirim query SQL.
  • isc.py.msg.ClassRequest - Nyetél harta Class pikeun lulus data kelas.
  • isc.py.msg.TableRequest - harta set Table pikeun mindahkeun data tabel.
  • isc.py.msg.GlobalRequest - harta set Global pikeun mindahkeun data global.

Dina prosés tés, tingali kagiatanana RAWdimana isc.py.msg.QueryRequest ditémbongkeun dina aksi.

Python Gateway di InterSystems IRIS

Simpen / Malikkeun Konteks Python

Tungtungna, urang tiasa nyimpen konteks Python di InterSystems IRIS, pikeun ngalakukeun ieu kami bakal ngirim isc.py.msg.SaveRequest kalawan argumen:

  • Mask - Ngan ukur variabel anu cocog sareng topéng anu disimpen. Dirojong * и ?... Conto: "Data*, Figure?". Default *.
  • MaxLength - Panjang maksimum variabel disimpen. Upami serialisasi variabel langkung panjang, éta bakal dipaliré. Setel ka 0 pikeun kéngingkeun variabel tina panjangna naon waé. Default $$$MaxStringLength.
  • Name - Ngaran konteks (opsional).
  • Description - Pedaran kontéks (opsional).

Balik deui Ens.StringResponse с Id konteks disimpen. Dina prosés tés, tingali kagiatanana Save Context.

pamundut patali isc.py.msg.RestoreRequest beban konteks ti InterSystems IRIS kana Python:

  • ContextId - identifier konteks.
  • Clear - mupus kontéks sateuacan malikkeun.

Notebook Jupyter

Notebook Jupyter mangrupikeun aplikasi wéb open source anu ngamungkinkeun anjeun nyiptakeun sareng nyebarkeun buku catetan anu ngandung kode, visualisasi, sareng téks. Python Gateway ngamungkinkeun anjeun pikeun ningali sareng ngédit prosés BPL dina bentuk Jupyter Notebook. Punten dicatet yén palaksana Python 3 normal ayeuna dianggo.

Ekstensi ieu nganggap yén anotasi ngandung kode Python sareng nganggo nami kagiatan salaku judul sateuacana. Ayeuna tiasa ngembangkeun prosés bisnis PythonGateway dina Jupyter Notebook. Ieu naon anu mungkin:

  • Jieun prosés bisnis anyar
  • Ngahapus prosés bisnis
  • Jieun kagiatan anyar
  • Robah kagiatan
  • Hapus kagiatan

di dieu video demo. Sareng sababaraha screenshot:

Proses Explorer

Python Gateway di InterSystems IRIS

Éditor prosés

Python Gateway di InterSystems IRIS

setting

  1. Anjeun peryogi InterSystems IRIS 2019.2+.
  2. Install PythonGateway v0.8+ (ngan diperlukeun isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Apdet kodeu ObjectScript ti gudang.
  4. Laksanakeun do ##class(isc.py.util.Jupyter).Install() tur turutan parentah.

Dokuméntasi.

papanggihan

MLToolkit mangrupikeun sakumpulan alat anu tujuanana pikeun ngagabungkeun modél sareng lingkungan transaksional supados modél anu diwangun tiasa gampang dianggo langsung dina prosés bisnis anjeun. Python Gateway mangrupikeun bagian tina MLToolkit sareng nyayogikeun integrasi sareng basa Python, ngamungkinkeun anjeun pikeun ngatur algoritma pembelajaran mesin anu diciptakeun dina Python (lingkungan utama pikeun seueur Data Élmuwan), ngagunakeun seueur perpustakaan anu siap-siap pikeun gancang nyiptakeun adaptif, robotic analitik AI / Solusi ML dina platform InterSystems IRIS.

rujukan

MLToolkit

Grup pangguna MLToolkit mangrupikeun gudang GitHub pribadi anu didamel salaku bagian tina organisasi GitHub perusahaan InterSystems. Éta dimaksudkeun pikeun pangguna éksternal anu masang, diajar, atanapi parantos nganggo komponén MLToolkit, kalebet Gateway Python. Grup ieu ngagaduhan sababaraha kasus anu dilaksanakeun (kalayan kode sumber sareng data uji) dina widang pamasaran, manufaktur, ubar sareng seueur industri anu sanés. Pikeun gabung ka Grup Pamaké ML Toolkit, punten kirimkeun email pondok ka alamat ieu: [email dijaga] sareng kalebet inpormasi ieu dina surat anjeun:

  • ngaran pamaké GitHub
  • Organisasi (anjeun damel atanapi diajar)
  • Posisi (posisi sabenerna anjeun dina organisasi anjeun, boh "Mahasiswa" atanapi "Mandiri").
  • nagara

Pikeun anu parantos maca tulisan sareng kabetot dina kamampuan InterSystems IRIS salaku platform pikeun ngembangkeun atanapi hosting intelijen buatan sareng mesin pembelajaran mesin, kami ngajak anjeun ngabahas kamungkinan skenario anu dipikaresep ku perusahaan anjeun. Kami bakal bagja pikeun nganalisis kabutuhan perusahaan anjeun sareng babarengan nangtukeun rencana aksi; Alamat email kontak tim ahli AI / ML kami - [email dijaga].

sumber: www.habr.com

Tambahkeun komentar