Python Gateway ing InterSystems IRIS

Artikel iki babagan Python Gateway, proyek komunitas open source kanggo platform data InterSystems IRIS. Proyek iki ngidini sampeyan ngatur algoritma pembelajaran mesin sing digawe ing Python (lingkungan utama kanggo akeh Ilmuwan Data), nggunakake akeh perpustakaan sing wis siap kanggo nggawe solusi AI / ML analitis robotik sing adaptif ing platform InterSystems IRIS. Ing artikel iki, aku bakal nuduhake sampeyan carane InterSystems IRIS bisa ngatur proses Python, nindakake transfer data rong arah sing efisien, lan nggawe proses bisnis sing cerdas.

Rencana

  1. Pambuka.
  2. piranti.
  3. Instalasi
  4. API.
  5. Interoperabilitas.
  6. Notebook Jupyter Kab.
  7. Kesimpulan.
  8. Pranala.
  9. M.L.Toolkit.

Pambuka

Python minangka basa pamrograman umum tingkat dhuwur sing fokus kanggo ningkatake produktivitas pangembang lan keterbacaan kode. Ing seri artikel iki, aku bakal ngomong babagan kemungkinan nggunakake basa Python ing platform InterSystems IRIS, nalika fokus utama artikel iki yaiku nggunakake Python minangka basa kanggo nggawe lan ngetrapake model pembelajaran mesin.

Pembelajaran mesin (ML) minangka kelas metode intelijen buatan, fitur karakteristik sing dudu solusi langsung saka masalah, nanging sinau ing proses ngrampungake masalah sing padha.

Algoritma lan model pembelajaran mesin dadi luwih umum. Ana macem-macem alasan kanggo iki, nanging kabeh gumantung marang aksesibilitas, kesederhanaan, lan entuk asil praktis. Apa clustering utawa malah modeling jaringan saraf minangka teknologi anyar?

Mesthi ora, nanging saiki ora perlu nulis atusan ewu baris kode kanggo mbukak siji model, lan biaya nggawe lan nggunakake model saya cilik.

Piranti terus berkembang - nalika kita ora duwe alat AI/ML sing berorientasi GUI kanthi lengkap, kemajuan sing kita deleng karo akeh kelas sistem informasi liyane kaya BI (saka nulis kode nganti nggunakake kerangka kerja lan solusi sing bisa dikonfigurasi berorientasi GUI), uga katon. ing alat nggawe AI/ML. Kita wis ngliwati tahap nulis kode lan saiki nggunakake kerangka kanggo mbangun lan model latihan.

Perbaikan liyane, kayata kemampuan kanggo nyebarake model sing wis dilatih ing ngendi pangguna pungkasan mung kudu ngrampungake latihan model ing data tartamtu, uga nggawe luwih gampang kanggo miwiti nglamar machine learning. Kemajuan kasebut nggawe luwih gampang sinau babagan mesin sinau, kanggo profesional lan perusahaan umume.

Ing tangan liyane, kita ngumpulake data liyane lan liyane. Kanthi platform data terpadu kayata InterSystems IRIS, kabeh informasi iki bisa langsung disiapake lan digunakake minangka input kanggo model pembelajaran mesin.

Kanthi transisi menyang awan, ngluncurake proyek AI/ML luwih gampang tinimbang sadurunge. Kita mung bisa nggunakake sumber daya sing dibutuhake. Kajaba iku, amarga paralelisasi sing ditawakake platform awan, kita bisa ngirit wektu sing boroske.

Nanging apa babagan asil? Iki ngendi iku dadi luwih rumit. Ana akeh alat kanggo mbangun model, sing bakal dakrembug sabanjure. Nggawe model sing apik ora gampang, nanging apa sabanjure? Keuntungan saka panggunaan model dening bisnis uga minangka tugas sing ora pati penting. Oyod masalah kasebut yaiku pamisahan beban kerja lan model data analitis lan transaksional. Nalika kita olahraga model, kita biasane nindakake ing data sajarah. Nanging panggonan kanggo model sing dibangun yaiku ing pangolahan data transaksional. Apa gunane model deteksi transaksi penipuan sing paling apik yen kita mbukak sapisan dina? Penipu wis lunga karo dhuwit. Kita kudu nglatih model kasebut babagan data historis, nanging uga kudu ngetrapake kanthi nyata ing data anyar sing mlebu supaya proses bisnis bisa tumindak miturut prediksi sing digawe model kasebut.

ML Toolkit minangka toolkit sing nindakake mung: nggabungake model lan lingkungan transaksional supaya model sing sampeyan gawe bisa gampang digunakake langsung ing proses bisnis sampeyan. Python Gateway minangka bagéan saka ML Toolkit lan nyedhiyakake integrasi karo basa Python (padha karo R Gateway, minangka bagéan saka ML Toolkit nyedhiyakake integrasi karo basa R).

Piranti

Sadurunge nerusake, aku pengin njlèntrèhaké sawetara alat lan perpustakaan Python sing bakal digunakake mengko.

teknologi

  • Python minangka basa pamrograman tingkat dhuwur sing diinterpretasikake, tujuan umum. Kauntungan utama basa kasebut yaiku perpustakaan matematika, ML lan AI sing gedhe. Kaya ObjectScript, iki minangka basa berorientasi obyek, nanging kabeh ditetepake kanthi dinamis, ora statis. Uga kabeh obyek. Artikel-artikel sabanjure nganggep akrab karo basa kasebut. Yen sampeyan pengin miwiti sinau, aku nyaranake miwiti karo dokumentasi.
  • Kanggo latihan sabanjure, atur Python 3.6.7 64bit.
  • IDE: Aku nggunakake PyCharm, nanging umume много. Yen sampeyan nggunakake Atelier, ana plugin Eclipse kanggo pangembang Python. Yen sampeyan nggunakake VS Code, banjur ana extension kanggo Python.
  • Notebook: Tinimbang IDE, sampeyan bisa nulis lan nuduhake skrip ing notebook online. Sing paling populer yaiku jupyter.

Perpustakaan

Iki minangka dhaptar perpustakaan machine learning (sebagean):

  • numpy - paket dhasar kanggo petungan sing tepat.
  • Pandas - struktur data kinerja dhuwur lan alat analisis data.
  • matplotlib - Nggawe grafik.
  • segara - visualisasi data adhedhasar matplotlib.
  • Sklearn - metode machine learning.
  • XGBoost - algoritma machine learning ing metodologi Gradient Boosting.
  • Gensim - NLP.
  • Keras - jaringan syaraf.
  • aliran tensor minangka platform kanggo nggawe model pembelajaran mesin.
  • PyTorch minangka platform kanggo nggawe model pembelajaran mesin sing fokus ing Python.
  • nyoka - PMML saka macem-macem model.

Teknologi AI/ML ndadekake bisnis luwih efisien lan bisa adaptasi. Kajaba iku, saiki teknologi kasebut dadi luwih gampang dikembangake lan diimplementasikake. Mulai sinau babagan teknologi AI/ML lan kepiye carane bisa mbantu organisasi sampeyan tuwuh.

Instalasi

Ana sawetara cara kanggo nginstal lan nggunakake Python Gateway:

  • ОС
    • Windows
    • Linux
    • Mac
  • docker
    • Gunakake gambar saka DockerHub
    • Nggawe gambar dhewe

Preduli saka cara instalasi, sampeyan butuh kode sumber. Panggonan mung kanggo ngundhuh kode iku release kaca. Isine rilis stabil sing diuji, mung entuk sing paling anyar. Ing wayahe iku 0.8, nanging liwat wektu bakal ana anyar. Aja kloning / download repositori, download rilis paling anyar.

ОС

Yen sampeyan nginstal Python Gateway ing sistem operasi, banjur pisanan (preduli saka sistem operasi) sampeyan kudu nginstal Python. Kanggo iki:

  1. Instal Python 3.6.7 64 dicokot. Disaranake nginstal Python ing direktori standar.
  2. Instal modul dill: pip install dill.
  3. Ngundhuh kode ObjectScript (i.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) menyang wilayah apa wae kanthi produk. Yen sampeyan pengin area sing ana kanggo ndhukung produk, bukak: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Panggonan callout DLL/SO/DYLIB menyang folder bin conto InterSystems IRIS sampeyan. File perpustakaan kudu kasedhiya ing path bali dening write ##class(isc.py.Callout).GetLib().

Windows

  1. Priksa manawa variabel lingkungan PYTHONHOME TCTerms kanggo Python 3.6.7.
  2. Priksa manawa variabel lingkungan sistem PATH ngandhut variabel PYTHONHOME (utawa direktori sing dituju).

Linux (Debian/Ubuntu)

  1. Priksa manawa variabel lingkungan kasebut PATH ngemot /usr/lib и /usr/lib/x86_64-linux-gnu. Gunakake File /etc/environment kanggo nyetel variabel lingkungan.
  2. Ing cilik saka kasalahan undefined symbol: _Py_TrueStruct nyetel setelan PythonLib. ugi ing Readme ana bagean Ngatasi masalah.

Mac

  1. Saiki mung python 3.6.7 didhukung saka Python.org. Priksa Variabel PATH.

Yen sampeyan wis ngganti variabel lingkungan, miwiti maneh produk InterSystems.

docker

Nggunakake wadhah duwe sawetara kaluwihan:

  • Portabilitas
  • Efektifitas
  • Jampel
  • entheng
  • Imutabilitas

Priksa iki seri artikel kanggo informasi luwih lengkap babagan nggunakake Docker karo produk InterSystems.

Kabeh mbangun Python Gateway saiki adhedhasar wadhah. 2019.4.

Gambar rampung

mlaku: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestkanggo ngundhuh lan mbukak Python Gateway karo InterSystems IRIS Community Edition. Mekaten.

Nggawe gambar dhewe

Kanggo mbangun gambar docker, mbukak ing root repositori: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Kanthi gawan, gambar dibangun adhedhasar gambar store/intersystems/iris-community:2019.4.0.383.0, Nanging sampeyan bisa ngganti iki kanthi nyetel variabel IMAGE.
Kanggo mbangun saka InterSystems IRIS run: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Sawise iku, sampeyan bisa mbukak gambar docker:

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

Yen sampeyan nggunakake gambar adhedhasar InterSystems IRIS Community Edition, sampeyan ora perlu nemtokake tombol.

komentar

  • Proses Test isc.py.test.Process nyimpen sawetara gambar menyang direktori sauntara. Sampeyan bisa uga pengin ngganti path iki menyang direktori sing dipasang. Kanggo nindakake iki, sunting setelan WorkingDir nemtokake direktori sing dipasang.
  • Kanggo ngakses terminal, bukak: docker exec -it irispy sh.
  • Akses menyang Portal Manajemen Sistem kanthi mlebu SuperUser/SYS.
  • Kanggo mungkasi wadhah, mbukak: docker stop irispy && docker rm --force irispy.

Priksa instalasi

Sawise sampeyan wis diinstal Python Gateway, iku worth mriksa sing bisa digunakake. Jalanake kode iki ing terminal InterSystems IRIS:

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

Asil kudu HELLO - Nilai saka variabel Python x. Yen status bali sc iku salah utawa var kosong, mriksa Readme-Bagian Ngatasi masalah.

API

Python Gateway wis diinstal lan sampeyan wis verifikasi sing bisa digunakake. Wektu kanggo miwiti nggunakake!
Antarmuka utama kanggo Python punika isc.py.Main. Nawakake klompok metode ing ngisor iki (kabeh bali %Status):

  • eksekusi kode
  • Transfer data
  • Bantu

eksekusi kode

Cara kasebut ngidini sampeyan nglakokake kode Python sing sewenang-wenang.

SimpleString

SimpleString minangka cara utama. Butuh 4 argumen opsional:

  • code yaiku baris kode sing kudu dieksekusi. Karakter feed baris: $c(10).
  • returnVariable iku jeneng variabel kanggo bali.
  • serialization - carane serialize returnVariable. 0 - string (standar), 1 - repr.
  • result - referensi ByRef kanggo variabel kang Nilai ditulis returnVariable.

Ndhuwur kita wis rampung:

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

Ing conto iki, kita nemtokake variabel Python x tegese Hello lan pengin bali Nilai saka variabel Python x menyang variabel ObjectScript var.

ExecuteCode

ExecuteCode minangka alternatif sing luwih aman lan kurang mbatesi SimpleString.
Garis ing platform InterSystems IRIS diwatesi nganti 3 karakter, lan yen sampeyan pengin nglakokake kode sing luwih dawa, sampeyan kudu nggunakake stream.
Butuh rong argumen:

  • code - string utawa stream kode Python sing bakal dieksekusi.
  • variable - (opsional) nemtokake asil eksekusi code variabel Python iki.

Saran kanggo nggunakake:

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

Ing conto iki, kita Multiply 2 dening 3 lan nyimpen asil ing variabel Python y.

Transfer data

Pass data menyang lan saka Python.

Python -> InterSystems IRIS

Ana 4 cara kanggo entuk nilai variabel Python ing InterSystems IRIS, gumantung saka serialisasi sing dibutuhake:

  • String kanggo jinis data prasaja lan debugging.
  • Repr kanggo nyimpen obyek prasaja lan debugging.
  • JSON kanggo gampang manipulasi data ing sisih InterSystems IRIS.
  • Pickle kanggo nyimpen obyek.

Cara iki ngidini sampeyan nampa variabel saka Python minangka senar utawa minangka stream.

  • GetVariable(variable, serialization, .stream, useString) - entuk serialization variabel variable в stream. Yen useString punika 1 lan serialization diselehake ing senar, banjur senar bali, ora stream.
  • GetVariableJson(variable, .stream, useString) - entuk serialisasi JSON saka variabel.
  • GetVariablePickle(variable, .stream, useString, useDill) -Njaluk Pickle (utawa Dill) serialization saka variabel.

Ayo dadi nyoba kanggo njaluk variabel kita y.

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

InterSystems IRIS -> Python

Loading data saka InterSystems IRIS menyang Python.

  • ExecuteQuery(query, variable, type, namespace) - nggawe dataset (pandas dataframe utawa list) saka query sql lan nyetel menyang variabel python variable. Kantong plastik isc.py kudu kasedhiya ing wilayah namespace - panjalukan bakal kaleksanan ana.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - mbukak data global global saka langganan start kanggo end ing Python minangka variabel jinis type: list, utawa panda dataframe. Katrangan saka argumen opsional mask lan labels kasedhiya ing dokumentasi kelas lan repositori Dokumen Transfer Data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - ngemot data kelas class saka id start kanggo end ing Python minangka variabel jinis type: list, utawa panda dataframe. properties - dhaptar (dipisahake karo koma) sifat kelas sing bakal dimuat menyang set data. Topeng didhukung * и ?. Default - * (kabeh sifat). Properti %%CLASSNAME digatekake.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - ngemot data tabel table saka id start kanggo end ing python.

ExecuteQuery - universal (saben pitakon SQL sing bener bakal diterusake menyang Python). Nanging, ExecuteGlobal lan bungkuse ExecuteClass и ExecuteTable bisa karo sawetara Watesan. Padha luwih cepet (3-5 kaping luwih cepet saka driver ODBC lan 20 kaping luwih cepet saka ExecuteQuery). Informasi liyane ing Dokumen Transfer Data.
Kabeh cara kasebut ndhukung transfer data saka wilayah apa wae. Kantong plastik isc.py kudu kasedhiya ing wilayah target.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - maringaken asil sembarang query SQL bener kanggo Python. Iki minangka cara transfer data sing paling alon. Gunakake yen ExecuteGlobal lan bungkuse ora kasedhiya.

Argumentasi:

  • query - pitakon sql.
  • variable - jeneng variabel Python kang data ditulis.
  • type - list utawa panda dataframe.
  • namespace - wilayah ing ngendi panyuwunan bakal ditindakake.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - maringaken global kanggo Python.

Argumentasi:

  • global iku jeneng global tanpa ^
  • variable - jeneng variabel Python kang data ditulis.
  • type - list utawa panda dataframe.
  • start - langganan pisanan saka global. kudune %Integer.
  • end minangka subskrip pungkasan global. kudune %Integer.
  • mask - topeng saka nilai global. Topeng kasebut bisa luwih cendhek tinimbang jumlah lapangan ing global (ing kasus iki, lapangan ing pungkasan bakal dilewati). Cara ngowahi format topeng:
    • + pass Nilai minangka.
    • - nilai skip.
    • b - Tipe Boolean (0 - False, liyane kabeh - True).
    • d — Tanggal (saka $horolog, ing Windows saka 1970, ing Linux saka 1900).
    • t - Wektu ($horolog, detik sawise tengah wengi).
    • m — Stempel wektu (TAHUN-BULAN-DAY JAM:MENIT:SARI format SECOND).
  • labels - %Dhaptar jeneng kolom. Unsur pisanan yaiku jeneng subskrip.
  • namespace - wilayah ing ngendi panyuwunan bakal ditindakake.

Execute Class

mbungkus liwat ExecuteGlobal. Nyiyapake telpon adhedhasar definisi kelas ExecuteGlobal lan nelpon dheweke.

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

Argumentasi:

  • class - jeneng kelas
  • variable - jeneng variabel Python kang data ditulis.
  • type - list utawa panda dataframe.
  • start - wiwitan Id.
  • end - Id pungkasan
  • properties - dhaptar (dipisahake karo koma) sifat kelas sing bakal dimuat menyang set data. Topeng didhukung * и ?. Default - * (kabeh sifat). Properti %%CLASSNAME digatekake.
  • namespace - wilayah ing ngendi panyuwunan bakal ditindakake.

Kabeh properti diwarisake kajaba sifat jinis %Date, %Time, %Boolean и %TimeStamp - padha diowahi kanggo kelas Python cocog.

EksekusiTabel

mbungkus liwat ExecuteClass. Nerjemahake jeneng tabel dadi jeneng kelas lan telpon ExecuteClass. Tandha tangan:

ExecuteTable(table, variable, type, start, end, properties, namespace) - maringaken data Tabel kanggo Python.

Argumentasi:

  • table - jeneng meja.
    Kabeh argumentasi liyane diterusake. ExecuteClass.

Cathetan

  • ExecuteGlobal, ExecuteClass и ExecuteTable kerjane padha cepet.
  • ExecuteGlobal 20 kaping luwih cepet saka ExecuteQuery ing dataset gedhe (wektu transfer> 0.01 detik).
  • ExecuteGlobal, ExecuteClass и ExecuteTable nggarap global kanthi struktur iki: ^global(key) = $lb(prop1, prop2, ..., propN) ngendi key iku sawijining integer.
  • Kanggo ExecuteGlobal, ExecuteClass и ExecuteTable kisaran nilai sing didhukung %Date cocog karo kisaran mktime lan gumantung ing OSwindows: 1970-01-01, linux 1900-01-01, mac). Gunakake %TimeStampkanggo pass data njaba sawetara iki utawa nggunakake pandas dataframe minangka watesan iki mung kanggo dhaftar.
  • Kanggo ExecuteGlobal, ExecuteClass и ExecuteTable kabeh argumen kajaba sumber data (global, kelas utawa tabel) lan variabel iku opsional.

conto

kelas tes isc.py.test.Person ngemot cara sing nuduhake kabeh opsi 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)

cara nelpon do ##class(isc.py.test.Person).Test() kanggo ndeleng carane kabeh cara transfer data bisa.

Metode Helper

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - entuk informasi babagan variabel: apa ditetepake, kelas lan dawa serialisasi.
  • GetVariableDefined(variable, .defined) - apa variabel ditetepake.
  • GetVariableType(variable, .type) - entuk kelas variabel.
  • GetStatus() - njaluk lan mbusak istiméwa pungkasan ing sisih Python.
  • GetModuleInfo(module, .imported, .alias) - entuk variabel modul lan status impor.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - entuk informasi babagan fungsi kasebut.

Interoperabilitas

Sampeyan wis sinau carane nelpon Python Gateway saka terminal, saiki ayo kang miwiti nggunakake ing produksi. Ing basis kanggo sesambungan karo Python ing mode iki isc.py.ens.Operation. Iku ngidini kita:

  • Nglakokake kode Python
  • Simpen / mulihake konteks Python
  • Muat lan nampa data saka Python

Sejatine, operasi Pyhton minangka pambungkus isc.py.Main. Operasi isc.py.ens.Operation ngidini interaksi karo proses Python saka produk InterSystems IRIS. Lima panjalukan didhukung:

  • isc.py.msg.ExecutionRequest kanggo nglakokaké kode Python. bali isc.py.msg.ExecutionResponse kanthi asil eksekusi lan nilai variabel sing dijaluk.
  • isc.py.msg.StreamExecutionRequest kanggo nglakokaké kode Python. bali isc.py.msg.StreamExecutionResponse asil eksekusi lan nilai variabel sing dijaluk. Analog isc.py.msg.ExecutionRequest, nanging nampa lan ngasilake stream tinimbang strings.
  • isc.py.msg.QueryRequest kanggo nransfer asil ngeksekusi query SQL. bali Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest kanggo ngliwati data global / kelas / tabel. bali Ens.Response.
  • isc.py.msg.SaveRequest kanggo nyimpen konteks Python. bali Ens.StringResponse karo ID konteks.
  • isc.py.msg.RestoreRequest kanggo mulihake konteks Python.

    Salajengipun, isc.py.ens.Operation duwe rong setelan:

    • Initializer - milih kelas sing ngleksanakake antarmuka isc.py.init.Abstract. Bisa digunakake kanggo mbukak fungsi, modul, kelas, lan liya-liyane. Dieksekusi sapisan nalika proses diwiwiti.
    • PythonLib - (Linux mung) yen sampeyan ndeleng kesalahan boot, nyetel nilai kanggo libpython3.6m.so utawa malah ing path lengkap kanggo perpustakaan Python.

Nggawe proses bisnis

Ana rong kelas sing kasedhiya kanggo nggampangake pangembangan proses bisnis:

  • isc.py.ens.ProcessUtils ngidini sampeyan ngekstrak anotasi saka aktivitas kanthi substitusi variabel.
  • isc.py.util.BPEmulator nggampangake kanggo nyoba pangolahan bisnis karo Python. Bisa nglakokake proses bisnis (bagean Python) ing proses saiki.

Substitusi variabel

Kabeh proses bisnis diwarisake saka isc.py.ens.ProcessUtils, bisa nggunakake cara GetAnnotation(name) kanggo entuk nilai anotasi kegiatan kanthi jenenge. Anotasi aktivitas bisa uga ngemot variabel sing bakal dievaluasi ing sisih InterSystems IRIS sadurunge dikirim menyang Python. Mangkene sintaks kanggo substitusi variabel:

  • ${class:method:arg1:...:argN} - cara nelpon
  • #{expr} - nglakokake kode ing basa ObjectScript.

Conto kasedhiya ing proses bisnis test isc.py.test.Process, contone, ing kegiatan Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Ing conto iki:

  • #{process.WorkDirectory} ngasilake properti WorkDirectory obyek process, kang minangka conto saka kelas isc.py.test.Process sing. proses bisnis saiki.
  • ${%PopulateUtils:Integer:1:100} nelpon cara Integer kelas %PopulateUtils, maringaken argumen 1 и 100, ngasilake integer acak ing sawetara 1...100.

Tes proses bisnis

Produksi test lan proses bisnis test kasedhiya minangka standar minangka bagéan saka Python Gateway. Kanggo nggunakake:

  1. Ing OS terminal run: pip install pandas matplotlib seaborn.
  2. Ing terminal InterSystems IRIS, mbukak: do ##class(isc.py.test.CannibalizationData).Import() kanggo ngisi data tes.
  3. Produk peluncuran isc.py.test.Production.
  4. Kirim jinis panjalukan Ens.Request в isc.py.test.Process.

Ayo padha ndeleng carane iku kabeh bisa bebarengan. mbukak isc.py.test.Process ing editor BPL:

Python Gateway ing InterSystems IRIS

eksekusi kode

Panggilan sing paling penting yaiku eksekusi kode Python:

Python Gateway ing InterSystems IRIS

Panjaluk digunakake isc.py.msg.ExecutionRequest, iki sifate:

  • Code - Kode Python.
  • SeparateLines - apa kanggo pamisah kode menyang baris kanggo eksekusi. $c(10) (n) digunakake kanggo misahake strings. Elinga yen ora dianjurake kanggo ngolah kabeh pesen bebarengan, fungsi iki mung kanggo diproses def lan ekspresi multiline sing padha. Default 0.
  • Variables minangka dhaptar variabel sing dipisahake koma sing bakal ditambahake menyang respon.
  • Serialization - Carane serialize variabel kita arep bali. Pilihan: Str, Repr, JSON, Pickle и Dill, gawan Str.

Ing kasus kita, kita mung nyetel properti Code, supaya kabeh properti liyane nggunakake nilai standar. Kita nyetel kanthi nelpon process.GetAnnotation("Import pandas"), sing nalika runtime ngasilake anotasi sawise substitusi variabel wis ditindakake. Akhire kode import pandas as pd bakal diterusake menyang Python. GetAnnotation bisa migunani kanggo njupuk script Python multi-line, nanging ora ana watesan ing cara iki njupuk kode. Sampeyan bisa nyetel properti Code ing sembarang cara trep kanggo sampeyan.

Njupuk Variabel

Tantangan liyane menarik nggunakake isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway ing InterSystems IRIS

Iku ngetung Matriks Korelasi ing sisih Python lan ngekstrak variabel kasebut corrmat bali menyang InterSystems IRIS ing format JSON kanthi nyetel properti panyuwunan:

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

Kita bisa ndeleng asil ing Visual Trace:

Python Gateway ing InterSystems IRIS

Lan yen kita butuh nilai iki ing BP, bisa dipikolehi kaya mangkene: callresponse.Variables.GetAt("corrmat").

Transfer data

Sabanjure, ayo ngomong babagan nransfer data saka InterSystems IRIS menyang Python, kabeh panjaluk transfer data ngetrapake antarmuka isc.py.msg.DataRequest, sing nyedhiyakake properti ing ngisor iki:

  • Variable punika variabel Python kang data ditulis.
  • Type - jinis variabel: dataframe (pandas dataframe) utawa list.
  • Namespace - wilayah saka ngendi kita nampa data. Kantong plastik isc.py kudu kasedhiya ing wilayah iki. Iki bisa uga dadi wilayah tanpa dhukungan produk.

Adhedhasar antarmuka iki, 4 kelas panjaluk ditindakake:

  • isc.py.msg.QueryRequest - nyetel property Query kanggo ngirim query SQL.
  • isc.py.msg.ClassRequest - nyetel property Class kanggo pass data kelas.
  • isc.py.msg.TableRequest - nyetel property Table kanggo pass data tabel.
  • isc.py.msg.GlobalRequest - nyetel property Global kanggo nransfer data sacara global.

Ing proses tes, deleng kegiatan kasebut RAWngendi isc.py.msg.QueryRequest ditampilake ing tumindak.

Python Gateway ing InterSystems IRIS

Nyimpen / Mulihake Konteks Python

Akhire, kita bisa nyimpen konteks Python ing InterSystems IRIS, kanggo nindakake iki, ngirim isc.py.msg.SaveRequest kanthi argumentasi:

  • Mask - Mung variabel sing gawe marem topeng disimpen. Didhukung * и ?. Tuladha: "Data*, Figure?". Default *.
  • MaxLength - Dawane maksimum variabel sing disimpen. Yen serialisasi variabel luwih dawa, mula bakal diabaikan. Setel menyang 0 kanggo entuk variabel kanthi dawa apa wae. Default $$$MaxStringLength.
  • Name - Jeneng konteks (opsional).
  • Description - Katrangan konteks (opsional).

Bali Ens.StringResponse с Id konteks sing disimpen. Ing proses tes, deleng kegiatan kasebut Save Context.

Panjaluk sing gegandhengan isc.py.msg.RestoreRequest ngemot konteks saka InterSystems IRIS menyang Python:

  • ContextId yaiku pengenal konteks.
  • Clear - mbusak konteks sadurunge mulihake.

Notebook Jupyter Kab

Notebook Jupyter Kab minangka aplikasi web open source sing ngidini sampeyan nggawe lan nerbitake notebook sing ngemot kode, visualisasi, lan teks. Python Gateway ngijini sampeyan kanggo ndeleng lan ngowahi pangolahan BPL minangka Jupyter Notebook. Elinga yen eksekutor Python 3 biasa saiki digunakake.

Ekstensi iki nganggep manawa anotasi ngemot kode Python lan nggunakake jeneng kegiatan minangka judhul sadurunge. Saiki bisa ngembangake proses bisnis PythonGateway ing Jupyter Notebook. Mangkene apa sing bisa ditindakake:

  • Nggawe proses bisnis anyar
  • Mbusak pangolahan bisnis
  • Nggawe aktivitas anyar
  • Ngganti kegiatan
  • Mbusak kegiatan

kene video demo. Lan sawetara gambar:

Proses Explorer

Python Gateway ing InterSystems IRIS

Editor proses

Python Gateway ing InterSystems IRIS

Instalasi

  1. Sampeyan mbutuhake InterSystems IRIS 2019.2+.
  2. Instal PythonGateway v0.8+ (mung mbutuhake isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Nganyari kode ObjectScript saka gudang.
  4. Nglakokke do ##class(isc.py.util.Jupyter).Install() lan tindakake pituduh.

Dokumentasi.

temonan

MLToolkit minangka seperangkat alat sing tujuane kanggo nggabungake model lan lingkungan transaksional supaya model sing dibangun bisa gampang digunakake langsung ing proses bisnis sampeyan. Python Gateway minangka bagean saka MLToolkit lan nyedhiyakake integrasi karo basa Python, ngidini sampeyan ngatur algoritma pembelajaran mesin sing digawe ing Python (lingkungan utama kanggo akeh Ilmuwan Data), nggunakake akeh perpustakaan sing wis siap kanggo nggawe AI / analitik robotik adaptif kanthi cepet. Solusi ML ing platform InterSystems IRIS.

referensi

MLTToolkit

Klompok pangguna MLToolkit minangka gudang GitHub pribadi sing digawe minangka bagéan saka organisasi GitHub perusahaan InterSystems. Iki ditujokake kanggo pangguna eksternal sing nginstal, sinau, utawa wis nggunakake komponen MLToolkit, kalebu Gateway Python. Klompok kasebut duwe sawetara kasus sing ditindakake (kanthi kode sumber lan data tes) ing bidang pemasaran, manufaktur, obat-obatan lan akeh industri liyane. Kanggo gabung karo grup pangguna ML Toolkit, kirim email singkat menyang alamat ing ngisor iki: [email dilindhungi] lan kalebu informasi ing ngisor iki ing surat sampeyan:

  • jeneng panganggo GitHub
  • Organisasi (sampeyan kerja utawa sinau)
  • Posisi (posisi nyata sampeyan ing organisasi sampeyan, "Mahasiswa" utawa "Independen").
  • negara

Kanggo sing wis maca artikel kasebut lan kasengsem ing InterSystems IRIS minangka platform kanggo ngembangake utawa dadi tuan rumah intelijen buatan lan mekanisme pembelajaran mesin, diundang sampeyan kanggo ngrembug kemungkinan skenario sing menarik kanggo perusahaan sampeyan. Kita bakal gampang nganalisa kabutuhan perusahaan sampeyan lan nemtokake rencana tumindak; alamat email kontak grup pakar AI/ML - [email dilindhungi].

Source: www.habr.com

Add a comment