InterSystems IRIS-də Python Gateway

Bu məqalə InterSystems IRIS məlumat platforması üçün açıq mənbə icma layihəsi olan Python Gateway haqqındadır. Bu layihə sizə Python-da yaradılmış istənilən maşın öyrənmə alqoritmlərini (bir çox Data Scientists üçün əsas mühit) təşkil etməyə, InterSystems IRIS platformasında adaptiv, robotik analitik AI/ML həllərini tez bir zamanda yaratmaq üçün çoxsaylı hazır kitabxanalardan istifadə etməyə imkan verir. Bu yazıda mən sizə InterSystems IRIS-in Python proseslərini necə idarə edə biləcəyini, ikitərəfli məlumatların səmərəli ötürülməsini və ağıllı biznes prosesləri yarada biləcəyini göstərəcəyəm.

Planı

  1. Giriş.
  2. Alətlər.
  3. Quraşdırma.
  4. API.
  5. Qarşılıqlı işləmə qabiliyyəti.
  6. Jupyter notebook.
  7. Nəticələr.
  8. Bağlantılar.
  9. M.L.Alətlər dəsti.

Giriş

Python, tərtibatçının məhsuldarlığını və kodun oxunuşunu yaxşılaşdırmağa yönəlmiş yüksək səviyyəli, ümumi təyinatlı proqramlaşdırma dilidir. Bu məqalələr silsiləsində mən InterSystems IRIS platformasında Python dilindən istifadə imkanlarından danışacağam, halbuki bu məqalədə əsas diqqət maşın öyrənmə modellərinin yaradılması və tətbiqi üçün Python dili kimi istifadə edilməsidir.

Maşın öyrənməsi (ML) süni intellekt metodlarının bir sinfidir, xarakterik xüsusiyyəti problemin birbaşa həlli deyil, bir çox oxşar problemlərin həlli prosesində öyrənmədir.

Maşın öyrənmə alqoritmləri və modelləri getdikcə daha çox yayılır. Bunun bir çox səbəbi var, lakin hamısı əlçatanlıq, sadəlik və praktiki nəticələrə nail olmaqdan irəli gəlir. Klasterləşdirmə və ya hətta neyron şəbəkə modelləşdirmə yeni texnologiyadırmı?

Təbii ki, yox, amma indiki vaxtda bir modeli işlətmək üçün yüz minlərlə kod sətirləri yazmağa ehtiyac yoxdur və modellərin yaradılması və istifadəsi xərcləri getdikcə azalır.

Alətlər inkişaf edir - tam GUI yönümlü AI/ML alətlərimiz olmasa da, BI kimi bir çox digər informasiya sistemləri siniflərində (kod yazmaqdan çərçivələrdən və GUI yönümlü konfiqurasiya edilə bilən həllərə qədər) gördüyümüz tərəqqi də görünür. AI/ML yaratma vasitələrində. Biz artıq kod yazmaq mərhələsini keçmişik və bu gün modellərin qurulması və təlimi üçün çərçivələrdən istifadə edirik.

Digər təkmilləşdirmələr, məsələn, son istifadəçinin sadəcə öz xüsusi məlumatları üzrə modeli öyrətməyi bitirməli olduğu qabaqcadan öyrədilmiş modeli yaymaq bacarığı, həmçinin maşın öyrənməsinin tətbiqinə başlamağı asanlaşdırır. Bu irəliləyişlər həm peşəkarlar, həm də bütövlükdə şirkətlər üçün maşın öyrənməsini öyrənməyi xeyli asanlaşdırır.

Digər tərəfdən, biz getdikcə daha çox məlumat toplayırıq. InterSystems IRIS kimi vahid məlumat platforması ilə bütün bu məlumatlar dərhal hazırlana və maşın öyrənmə modelləri üçün giriş kimi istifadə edilə bilər.

Buluda keçidlə AI/ML layihələrini işə salmaq həmişəkindən daha asandır. Biz ancaq ehtiyacımız olan resursları istehlak edə bilərik. Üstəlik, bulud platformalarının təklif etdiyi paralelləşdirmə sayəsində vaxta qənaət edə bilərik.

Bəs nəticələr? Burada işlər daha da mürəkkəbləşir. Modellərin qurulması üçün bir çox vasitə var, mən bundan sonra müzakirə edəcəyəm. Yaxşı bir model qurmaq asan deyil, amma bundan sonra nə olacaq? Modelin biznes tərəfindən istifadəsindən qazanc əldə etmək də əhəmiyyətsiz bir işdir. Problemin kökü analitik və tranzaksiya iş yüklərinin və məlumat modellərinin ayrılmasıdır. Bir modeli öyrətdiyimiz zaman bunu adətən tarixi məlumatlar əsasında edirik. Lakin qurulmuş modelin yeri əməliyyat məlumatlarının işlənməsidir. Gündə bir dəfə işlətsək, ən yaxşı fırıldaq əməliyyatı aşkarlama modelinin nə faydası var? Fırıldaqçılar pulla çoxdan gediblər. Biz modeli tarixi məlumatlar üzərində öyrətməliyik, eyni zamanda onu real vaxt rejimində yeni daxil olan məlumatlar üzərində tətbiq etməliyik ki, biznes proseslərimiz modelin verdiyi proqnozlara uyğun hərəkət edə bilsin.

ML Toolbar məhz bunu edən alətlər dəstidir: qurduğunuz modellərin birbaşa biznes proseslərinizdə asanlıqla istifadə oluna bilməsi üçün modelləri bir araya gətirmək və əməliyyat mühiti. Python Gateway ML Toolbar dəstinin bir hissəsidir və Python dili ilə inteqrasiyanı təmin edir (R Gateway-ə bənzəyir, ML Toolbar dəstinin bir hissəsi olmaq R dili ilə inteqrasiyanı təmin edir).

Toolbar

Davam etməzdən əvvəl mən daha sonra istifadə edəcəyimiz bir neçə Python aləti və kitabxanasını təsvir etmək istərdim.

Texnologiya

  • Python şərh olunan, ümumi təyinatlı, yüksək səviyyəli proqramlaşdırma dilidir. Dilin əsas üstünlüyü riyazi, ML və AI kitabxanalarının böyük kitabxanasıdır. ObjectScript kimi, bu da obyekt yönümlü bir dildir, lakin hər şey statik olaraq deyil, dinamik olaraq müəyyən edilir. Həm də hər şey bir obyektdir. Sonrakı məqalələr dillə keçici bir tanışlığı nəzərdə tutur. Öyrənməyə başlamaq istəyirsinizsə, ondan başlamağı məsləhət görürəm sənədləşdirmə.
  • Növbəti məşqlərimiz üçün təyin edin Python 3.6.7 64 bit.
  • IDE: Mən istifadə edirəm PyCharm, lakin ümumiyyətlə много. Atelier istifadə edirsinizsə, Python tərtibatçıları üçün Eclipse plagini var. VS Kodunu istifadə edirsinizsə, onda Python üçün bir uzantı var.
  • Noutbuk: IDE əvəzinə skriptlərinizi onlayn notebooklarda yazıb paylaşa bilərsiniz. Onlardan ən populyarı Yupiter.

Kitabxanalar

Budur maşın öyrənmə kitabxanalarının (qismən) siyahısı:

  • Çılpaq — dəqiq hesablamalar üçün əsas paket.
  • Pandas — yüksək performanslı məlumat strukturları və məlumatların təhlili alətləri.
  • matplotlib - Qrafiklərin yaradılması.
  • Dəniz doğulmuş - matplotlib əsasında verilənlərin vizuallaşdırılması.
  • Sklearn — maşın öyrənmə üsulları.
  • XGBoost — Gradient Boosting metodologiyası daxilində maşın öyrənmə alqoritmləri.
  • Gensim - NLP.
  • Keras - neyron şəbəkələri.
  • Tensor axını maşın öyrənmə modelləri yaratmaq üçün platformadır.
  • PyTorch Python üzərində cəmlənmiş maşın öyrənmə modelləri yaratmaq üçün platformadır.
  • Nyoka - Müxtəlif modellərdən PMML.

AI/ML texnologiyaları biznesi daha səmərəli və uyğunlaşa bilən edir. Üstəlik, bu gün bu texnologiyaların inkişafı və tətbiqi daha asan olur. AI/ML texnologiyaları və onların təşkilatınızın böyüməsinə necə kömək edə biləcəyini öyrənməyə başlayın.

Quraşdırma

Python Gateway-i quraşdırmağın və istifadə etməyin bir neçə yolu var:

  • ƏS
    • Windows
    • Linux
    • Mac
  • yükvuran
    • Şəkildən DockerHub-dan istifadə edin
    • Öz görünüşünüzü yaradın

Quraşdırma üsulundan asılı olmayaraq, mənbə koduna ehtiyacınız olacaq. Kodu yükləmək üçün yeganə yerdir buraxılış səhifəsi. O, sınaqdan keçmiş stabil buraxılışları ehtiva edir, sadəcə ən sonunu götürün. Hazırda 0.8-dir, lakin zaman keçdikcə yeniləri də olacaq. Repozitoriyanı klonlamayın/endirməyin, ən son buraxılışı endirin.

ƏS

Əgər siz Python Gateway-i əməliyyat sistemində quraşdırırsınızsa, ilk olaraq (əməliyyat sistemindən asılı olmayaraq) Python-u quraşdırmalısınız. Bunun üçün:

  1. Python 3.6.7 64 bit quraşdırın. Python-u standart qovluğa quraşdırmaq tövsiyə olunur.
  2. Modulu quraşdırın dill: pip install dill.
  3. ObjectScript kodunu yükləyin (məs. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) məhsulların olduğu istənilən əraziyə. Məhsulları dəstəkləmək üçün mövcud sahəni istəyirsinizsə, işlədin: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Yer məlumat DLL/SO/DYLIB qovluğa bin InterSystems IRIS nümunəniz. Kitabxana faylı tərəfindən qaytarılan yolda mövcud olmalıdır write ##class(isc.py.Callout).GetLib().

Windows

  1. Ətraf mühit dəyişəninin olduğundan əmin olun PYTHONHOME Python 3.6.7-yə işarə edir.
  2. Sistem mühiti dəyişəninin olduğundan əmin olun PATH dəyişəni ehtiva edir PYTHONHOME (və ya onun göstərdiyi kataloq).

Linux (Debian/Ubuntu)

  1. Ətraf mühit dəyişəninin olub olmadığını yoxlayın PATH ehtiva edir /usr/lib и /usr/lib/x86_64-linux-gnu. Fayldan istifadə edin /etc/environment mühit dəyişənlərini təyin etmək üçün.
  2. Səhvlər olduqda undefined symbol: _Py_TrueStruct parametrini təyin edin PythonLib. Ayrıca Readme Problemlərin aradan qaldırılması bölməsi var.

Mac

  1. Hal-hazırda yalnız python 3.6.7-dən dəstəklənir python.org. Dəyişənləri yoxlayın PATH.

Əgər mühit dəyişənlərini dəyişmisinizsə, InterSystems məhsulunuzu yenidən başladın.

yükvuran

Konteynerlərin istifadəsi bir sıra üstünlüklərə malikdir:

  • Taşınabilirlik
  • Effektivlik
  • Izolyasiya
  • yüngüllük
  • Dəyişməzlik

Bunu yoxlayın silsiləsi məqalələr InterSystems məhsulları ilə Docker-dən istifadə haqqında ətraflı məlumat üçün.

Bütün Python Gateway konstruksiyaları hazırda konteynerə əsaslanır. 2019.4.

Bitmiş şəkil

Qaçış: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestInterSystems IRIS Community Edition ilə Python Gateway-i yükləmək və işlətmək üçün. Hamısı budur.

Öz görünüşünüzü yaradın

Docker görüntüsünü yaratmaq üçün deponun kökündə işləyin: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Varsayılan olaraq, şəkil təsvir əsasında qurulur store/intersystems/iris-community:2019.4.0.383.0, lakin siz dəyişəni təyin etməklə bunu dəyişə bilərsiniz IMAGE.
InterSystems IRIS-dən qurmaq üçün: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemcommmunity/irispy:latest'.

Bundan sonra docker şəklini işə sala bilərsiniz:

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

Əgər siz InterSystems IRIS Community Edition əsasında təsvirdən istifadə edirsinizsə, açarı göstərməyə ehtiyac yoxdur.

Şərhlər

  • Test Prosesi isc.py.test.Process bir sıra şəkilləri müvəqqəti kataloqda saxlayır. Bu yolu quraşdırılmış kataloqa dəyişdirmək istəyə bilərsiniz. Bunu etmək üçün parametri redaktə edin WorkingDir quraşdırılmış kataloqun müəyyənləşdirilməsi.
  • Terminala daxil olmaq üçün çalıştırın: docker exec -it irispy sh.
  • Daxil olmaqla Sistem İdarəetmə Portalına daxil olun SuperUser/SYS.
  • Konteyneri dayandırmaq üçün çalıştırın: docker stop irispy && docker rm --force irispy.

Quraşdırmanın yoxlanılması

Python Gateway-i quraşdırdıqdan sonra onun işlədiyini yoxlamağa dəyər. Bu kodu InterSystems IRIS terminalında işlədin:

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

Nəticə olmalıdır HELLO - Python dəyişəninin dəyəri x. Qayıdış vəziyyəti varsa sc səhvdir və ya var boş, yoxlayın Readme - Problemlərin aradan qaldırılması bölməsi.

API

Python Gateway quraşdırılıb və siz onun işlədiyini təsdiqlədiniz. İstifadəyə başlamaq vaxtıdır!
Python üçün əsas interfeysdir isc.py.Main. Aşağıdakı üsul qruplarını təklif edir (hamısı geri qaytarılır %Status):

  • Kodun icrası
  • Məlumat ötürülməsi
  • Köməkçi

Kodun icrası

Bu üsullar ixtiyari Python kodunu icra etməyə imkan verir.

SimpleString

SimpleString əsas üsuldur. Bunun üçün 4 isteğe bağlı arqument lazımdır:

  • code icra ediləcək kod xəttidir. Sətir axını xarakteri: $c(10).
  • returnVariable qaytarılacaq dəyişənin adıdır.
  • serialization - necə seriallaşdırmaq olar returnVariable. 0 - sətir (standart), 1 - repr.
  • result - Dəyərin yazıldığı dəyişənə ByRef istinadı returnVariable.

Yuxarıda biz etdik:

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

Bu nümunədə biz Python dəyişəninə təyin edirik x dəyər Hello və Python dəyişəninin dəyərini qaytarmaq istəyirəm x ObjectScript dəyişəninə var.

İcra Kodu

ExecuteCode daha təhlükəsiz və daha az məhdudlaşdırıcı alternativdir SimpleString.
InterSystems IRIS platformasındakı xətlər 3 simvolla məhdudlaşır və daha uzun kod parçasını icra etmək istəyirsinizsə, axınlardan istifadə etməlisiniz.
Bunun üçün iki arqument lazımdır:

  • code — icra ediləcək Python kodunun sətri və ya axını.
  • variable - (isteğe bağlı) icra nəticəsini təyin edir code bu Python dəyişəni.

İstifadə etməyi təklif edin:

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

Bu nümunədə biz 2-ni 3-ə vururuq və nəticəni Python dəyişənində saxlayırıq y.

Məlumat ötürülməsi

Python-a və Python-dan məlumat ötürmək.

Python -> InterSystems IRIS

InterSystems IRIS-də Python dəyişəninin dəyərini əldə etməyin 4 yolu var, sizə lazım olan serializasiyadan asılı olaraq:

  • String sadə məlumat növləri və sazlama üçün.
  • Repr sadə obyektlərin saxlanması və sazlanması üçün.
  • JSON InterSystems IRIS tərəfində məlumatların asan manipulyasiyası üçün.
  • Pickle obyektləri saxlamaq üçün.

Bu üsullar Python-dan dəyişənləri sətir və ya axın kimi qəbul etməyə imkan verir.

  • GetVariable(variable, serialization, .stream, useString) - almaq serialization dəyişən variable в stream. Əgər useString 1-dir və serializasiya sətirdə yerləşdirilir, sonra axın deyil, sətir qaytarılır.
  • GetVariableJson(variable, .stream, useString) — dəyişənin JSON serializasiyasını əldə edin.
  • GetVariablePickle(variable, .stream, useString, useDill) -Dəyişənlərin Turşu (və ya Şüyüd) serializasiyasını alın.

Gəlin dəyişənimizi almağa çalışaq y.

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

InterSystems IRIS -> Python

InterSystems IRIS-dən Python-a məlumat yüklənir.

  • ExecuteQuery(query, variable, type, namespace) - verilənlər bazası yaradır (pandas dataframe və ya list) sql sorğusundan seçin və onu python dəyişəninə təyin edin variable. Plastik torba isc.py ərazidə mövcud olmalıdır namespace - sorğu orada icra olunacaq.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - qlobal məlumatları yükləyir global alt işarədən start üzrə end tip dəyişəni kimi Python-da type: list, və ya pandalar dataframe. Əlavə arqumentlərin təsviri masklabels sinif sənədlərində və depoda mövcuddur Məlumat ötürülməsi sənədləri.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - sinif məlumatlarını yükləyir class id-dən start üzrə end tip dəyişəni kimi Python-da type: list, və ya pandalar dataframe. properties — verilənlər toplusuna yüklənəcək sinif xassələrinin siyahısı (vergüllə ayrılmış). Maskalar dəstəklənir * и ?. Defolt - * (bütün əmlaklar). Əmlak %%CLASSNAME nəzərə alınmadı.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - cədvəl məlumatlarını yükləyir table id-dən start üzrə end pitonda.

ExecuteQuery - universal (hər hansı etibarlı SQL sorğusu Python-a ötürüləcək). Bununla belə, ExecuteGlobal və onun sarğıları ExecuteClass и ExecuteTable bir sıra məhdudiyyətlərlə işləmək. Onlar daha sürətlidir (ODBC sürücüsündən 3-5 dəfə və 20 dəfə daha sürətli). ExecuteQuery). Ətraflı məlumatda Məlumat ötürülməsi sənədləri.
Bütün bu üsullar istənilən sahədən məlumat ötürülməsini dəstəkləyir. Plastik torba isc.py hədəf ərazidə mövcud olmalıdır.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - istənilən etibarlı SQL sorğusunun nəticələrinin Python-a ötürülməsi. Bu, ən yavaş məlumat ötürmə üsuludur. Əgər istifadə edin ExecuteGlobal və onun sarğıları mövcud deyil.

Arqumentlər:

  • query - sql sorğusu.
  • variable - verilənlərin yazıldığı Python dəyişəninin adı.
  • type - list və ya pandalar dataframe.
  • namespace - sorğunun icra olunacağı sahə.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - Python-a qlobal ötürmək.

Arqumentlər:

  • global olmayan qlobal adıdır ^
  • variable - verilənlərin yazıldığı Python dəyişəninin adı.
  • type - list və ya pandalar dataframe.
  • start — Qlobalın ilk abunəçisi. Mütləq %Integer.
  • end Qlobalın son abunəçisidir. Mütləq %Integer.
  • mask — qlobal dəyərlər maskası. Maska qlobal sahənin sayından daha qısa ola bilər (bu halda sondakı sahələr atlanacaq). Maskanı necə formatlaşdırmaq olar:
    • + dəyəri olduğu kimi keçir.
    • - dəyəri atlayın.
    • b — Boolean növü (0 - False, qalan hər şey - True).
    • d — Tarix ($horolog-dan, Windows-da 1970-ci ildən, Linux-da 1900-cü ildən).
    • t - Vaxt ($horolog, gecə yarısından sonra saniyə).
    • m — Vaxt möhürü (İL-AY-GÜN SAAT: DƏQİQƏ: İKİNCİ format sətri).
  • labels - % Sütun adlarının siyahısı. Birinci element alt yazının adıdır.
  • namespace - sorğunun icra olunacağı sahə.

ExecuteClass

sarın ExecuteGlobal. Sinif tərifinə əsasən zəng hazırlayır ExecuteGlobal və onu çağırır.

ExecuteClass(class, variable, type, start, end, properties, namespace) - sinif məlumatlarının Python-a ötürülməsi.

Arqumentlər:

  • class - sinif adı
  • variable - verilənlərin yazıldığı Python dəyişəninin adı.
  • type - list və ya pandalar dataframe.
  • start — başlanğıc Id.
  • end - son İd
  • properties — verilənlər toplusuna yüklənəcək sinif xassələrinin siyahısı (vergüllə ayrılmış). Maskalar dəstəklənir * и ?. Defolt - * (bütün əmlaklar). Əmlak %%CLASSNAME nəzərə alınmadı.
  • namespace - sorğunun icra olunacağı sahə.

Bütün xassələr tip xassələri istisna olmaqla ötürülür %Date, %Time, %Boolean и %TimeStamp - onlar müvafiq Python siniflərinə çevrilir.

İcra Cədvəli

sarın ExecuteClass. Cədvəl adını sinif adına və zənglərə çevirir ExecuteClass. İmza:

ExecuteTable(table, variable, type, start, end, properties, namespace) - cədvəl məlumatlarının Python-a ötürülməsi.

Arqumentlər:

  • table - masa adı.
    Bütün digər arqumentlər olduğu kimi qəbul edilir. ExecuteClass.

Qeydlər

  • ExecuteGlobal, ExecuteClass и ExecuteTable eyni sürətlə işləyin.
  • ExecuteGlobal dən 20 dəfə sürətli ExecuteQuery böyük verilənlər bazasında (ötürmə vaxtı >0.01 saniyə).
  • ExecuteGlobal, ExecuteClass и ExecuteTable bu strukturla qloballarda işləyin: ^global(key) = $lb(prop1, prop2, ..., propN) hara key tam ədəddir.
  • Uğrunda ExecuteGlobal, ExecuteClass и ExecuteTable dəstəklənən dəyər diapazonu %Date diapazonuna uyğun gəlir mktime və OS-dən asılıdırWindows: 1970-01-01, linux 1900-01-01, mac). istifadə edin %TimeStampməlumatları bu diapazondan kənara ötürmək və ya pandas dataframe kimi istifadə etmək bu məhdudiyyət yalnız siyahı üçündür.
  • Uğrunda ExecuteGlobal, ExecuteClass и ExecuteTable məlumat mənbəyi (qlobal, sinif və ya cədvəl) və dəyişən istisna olmaqla, bütün arqumentlər isteğe bağlıdır.

Nümunələr

test sinfi isc.py.test.Şəxs bütün məlumat ötürmə variantlarını nümayiş etdirən metodu ehtiva edir:

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)

zəng üsulu do ##class(isc.py.test.Person).Test() bütün məlumat ötürmə üsullarının necə işlədiyini görmək.

Köməkçi metodları

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - dəyişən haqqında məlumat əldə edin: müəyyən edilib-edilməməsi, sinif və serializasiya uzunluğu.
  • GetVariableDefined(variable, .defined) - dəyişənin müəyyən edilib-edilməməsi.
  • GetVariableType(variable, .type) - dəyişənin sinfini əldə edin.
  • GetStatus() - Python tərəfindəki son istisnanı əldə edin və silin.
  • GetModuleInfo(module, .imported, .alias) — modul dəyişənini və idxal statusunu əldə edin.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - funksiya haqqında məlumat almaq.

Qarşılıqlı işləklik

Siz terminaldan Python Gateway-ə zəng etməyi öyrəndiniz, indi ondan istehsalda istifadə etməyə başlayaq. Bu rejimdə Python ilə qarşılıqlı əlaqə üçün əsasdır isc.py.ens.Operation. Bizə imkan verir:

  • Python kodunu icra edin
  • Python kontekstini yadda saxla/bərpa edin
  • Python-dan məlumatları yükləyin və qəbul edin

Əsasən, Pyhton əməliyyatı bir sarğıdır isc.py.Main. Əməliyyat isc.py.ens.Operation InterSystems IRIS məhsullarından Python prosesi ilə qarşılıqlı əlaqəyə imkan verir. Beş sorğu dəstəklənir:

  • isc.py.msg.ExecutionRequest Python kodunu icra etmək üçün. qayıdır isc.py.msg.ExecutionResponse icra nəticəsi və tələb olunan dəyişənlərin dəyərləri ilə.
  • isc.py.msg.StreamExecutionRequest Python kodunu icra etmək üçün. qayıdır isc.py.msg.StreamExecutionResponse icra nəticəsi və tələb olunan dəyişənlərin dəyərləri. Analoq isc.py.msg.ExecutionRequest, lakin sətirlər yerinə axınları qəbul edir və qaytarır.
  • isc.py.msg.QueryRequest SQL sorğusunun icrasının nəticəsini ötürmək üçün. qayıdır Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest qlobal/sinif/cədvəl məlumatlarını ötürmək üçün. qayıdır Ens.Response.
  • isc.py.msg.SaveRequest Python kontekstini saxlamaq üçün. qayıdır Ens.StringResponse kontekst ID ilə.
  • isc.py.msg.RestoreRequest Python kontekstini bərpa etmək üçün.

    Bundan əlavə, isc.py.ens.Operation iki parametr var:

    • Initializer - interfeysi həyata keçirən sinifin seçilməsi isc.py.init.Abstract. O, funksiyaları, modulları, sinifləri və s. yükləmək üçün istifadə edilə bilər. Proses başlayanda bir dəfə icra olunur.
    • PythonLib - (Yalnız Linux) yükləmə xətalarını görürsünüzsə, onun dəyərini təyin edin libpython3.6m.so və ya hətta Python kitabxanasına gedən tam yolda.

Biznes proseslərinin yaradılması

Biznes proseslərinin inkişafını asanlaşdıran iki sinif mövcuddur:

  • isc.py.ens.ProcessUtils dəyişən əvəzetmə ilə fəaliyyətlərdən annotasiyalar çıxarmağa imkan verir.
  • isc.py.util.BPEmulator Python ilə iş proseslərini sınamağı asanlaşdırır. Cari prosesdə bir iş prosesini (Python hissələri) icra edə bilər.

Dəyişən əvəzetmə

Bütün biznes prosesləri miras qalmışdır isc.py.ens.ProcessUtils, metodundan istifadə edə bilər GetAnnotation(name) adı ilə fəaliyyət annotasiyasının dəyərini əldə etmək. Fəaliyyət annotasiyasında Python-a ötürülməzdən əvvəl InterSystems IRIS tərəfində qiymətləndiriləcək dəyişənlər ola bilər. Dəyişənlərin dəyişdirilməsi üçün sintaksis budur:

  • ${class:method:arg1:...:argN} - metod çağırışı
  • #{expr} - ObjectScript dilində kodu icra etmək.

Test iş prosesində bir nümunə mövcuddur isc.py.test.Processməsələn, fəaliyyətdə Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Bu misalda:

  • #{process.WorkDirectory} obyektin WorkDirectory xassəsini qaytarır process, bu sinifin bir nümunəsidir isc.py.test.Process olanlar. cari iş prosesi.
  • ${%PopulateUtils:Integer:1:100} metodu çağırır Integer sinif %PopulateUtils, keçən arqumentlər 1 и 100, diapazonda təsadüfi tam ədədin qaytarılması 1...100.

Test iş prosesi

Test istehsalı və sınaq iş prosesi standart olaraq Python Gateway-in bir hissəsi kimi mövcuddur. Onlardan istifadə etmək üçün:

  1. OS terminalında işə salın: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS terminalında aşağıdakıları işlədin: do ##class(isc.py.test.CannibalizationData).Import() test məlumatlarını doldurmaq üçün.
  3. Məhsulları işə salın isc.py.test.Production.
  4. Göndərmə sorğu növü Ens.Request в isc.py.test.Process.

Gəlin hamısının birlikdə necə işlədiyini görək. açıq isc.py.test.Process BPL redaktorunda:

InterSystems IRIS-də Python Gateway

Kodun icrası

Ən vacib çağırış Python kodunun icrasıdır:

InterSystems IRIS-də Python Gateway

İstifadə edilən sorğu isc.py.msg.ExecutionRequest, onun xüsusiyyətləri bunlardır:

  • Code - Python kodu.
  • SeparateLines - icra üçün kodu sətirlərə bölmək olub-olmaması. $c(10) (n) sətirləri ayırmaq üçün istifadə olunur. Qeyd edək ki, bütün mesajı bir anda emal etmək Tövsiyə olunmur, bu funksiya yalnız emal üçündür def və oxşar çoxsətirli ifadələr. Defolt 0.
  • Variables cavaba əlavə olunacaq dəyişənlərin vergüllə ayrılmış siyahısıdır.
  • Serialization - Qaytarmaq istədiyimiz dəyişənləri necə seriallaşdırmaq olar. Seçimlər: Str, Repr, JSON, Pickle и Dill, default Str.

Bizim vəziyyətimizdə biz yalnız mülkiyyəti təyin edirik Code, belə ki, bütün digər xüsusiyyətlər öz standart dəyərlərindən istifadə etsin. Zəng edərək qurduq process.GetAnnotation("Import pandas"), iş vaxtında dəyişən dəyişdirmə yerinə yetirildikdən sonra annotasiya qaytarır. Nəhayət kod import pandas as pd Python-a ötürüləcək. GetAnnotation çox sətirli Python skriptlərini əldə etmək üçün faydalı ola bilər, lakin kodun bu şəkildə əldə edilməsində heç bir məhdudiyyət yoxdur. Mülk təyin edə bilərsiniz Code sizin üçün əlverişli olan hər hansı bir şəkildə.

Dəyişənlərin əldə edilməsi

İstifadə edərək başqa bir maraqlı problem isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

InterSystems IRIS-də Python Gateway

Python tərəfindəki Korrelyasiya Matrisini hesablayır və dəyişəni çıxarır corrmat sorğu xassələrini təyin etməklə JSON formatında InterSystems IRIS-ə qayıdın:

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

Nəticələri Visual Trace-də görə bilərik:

InterSystems IRIS-də Python Gateway

BP-də bu dəyərə ehtiyacımız varsa, onu belə əldə etmək olar: callresponse.Variables.GetAt("corrmat").

Məlumat ötürülməsi

Sonra, məlumatların InterSystems IRIS-dən Python-a ötürülməsi haqqında danışaq, bütün məlumat ötürmə sorğuları interfeysi həyata keçirir. isc.py.msg.DataRequest, aşağıdakı xüsusiyyətləri təmin edir:

  • Variable məlumatların yazıldığı Python dəyişənidir.
  • Type - dəyişən növü: dataframe (pandas dataframe) və ya list.
  • Namespace - məlumat aldığımız sahə. Plastik torba isc.py bu sahədə mövcud olmalıdır. Bu, məhsul dəstəyi olmayan bir sahə ola bilər.

Bu interfeys əsasında 4 sorğu sinfi həyata keçirilir:

  • isc.py.msg.QueryRequest - əmlak təyin etmək Query SQL sorğusu göndərmək üçün.
  • isc.py.msg.ClassRequest - əmlak təyin etmək Class sinif məlumatlarını ötürmək üçün.
  • isc.py.msg.TableRequest - əmlak təyin etmək Table cədvəl məlumatlarını ötürmək üçün.
  • isc.py.msg.GlobalRequest - əmlak təyin etmək Global qlobal məlumat ötürmək üçün.

Test prosesində fəaliyyətə baxın RAWHara isc.py.msg.QueryRequest hərəkətdə göstərilir.

InterSystems IRIS-də Python Gateway

Python kontekstinin saxlanması/bərpa edilməsi

Nəhayət, biz Python kontekstini InterSystems IRIS-də saxlaya bilərik, bunu etmək üçün göndərin isc.py.msg.SaveRequest arqumentlərlə:

  • Mask — Yalnız maskanı təmin edən dəyişənlər saxlanılır. Dəstəklənir * и ?. Nümunə: "Data*, Figure?"... Defolt *.
  • MaxLength — Saxlanılan dəyişənin maksimum uzunluğu. Əgər dəyişənin serializasiyası daha uzun olarsa, o, nəzərə alınmayacaq. İstənilən uzunluqda dəyişənləri əldə etmək üçün 0-a təyin edin. Defolt $$$MaxStringLength.
  • Name — Kontekst adı (istəyə görə).
  • Description — Kontekstin təsviri (istəyə görə).

Qayıdır Ens.StringResponse с Id saxlanan kontekst. Test prosesində fəaliyyətə baxın Save Context.

Əlaqədar sorğu isc.py.msg.RestoreRequest InterSystems IRIS-dən Python-a kontekst yükləyir:

  • ContextId kontekst identifikatorudur.
  • Clear — bərpa etməzdən əvvəl konteksti təmizləyin.

Jupyter noutbuku

Jupyter noutbuku kod, vizuallaşdırma və mətndən ibarət noutbuklar yaratmağa və dərc etməyə imkan verən açıq mənbəli veb proqramdır. Python Gateway BPL proseslərinə Jupyter Notebook kimi baxmaq və redaktə etmək imkanı verir. Qeyd edək ki, hazırda adi Python 3 icraçısından istifadə olunur.

Bu genişləndirmə annotasiyaların Python kodunu ehtiva etdiyini və fəaliyyət adlarını əvvəlki başlıqlar kimi istifadə etdiyini güman edir. Artıq Jupyter Notebook-da PythonGateway biznes proseslərini inkişaf etdirmək mümkündür. Mümkün olan budur:

  • Yeni biznes prosesləri yaradın
  • Biznes proseslərini silin
  • Yeni fəaliyyətlər yaradın
  • Fəaliyyətləri dəyişdirin
  • Fəaliyyətləri silin

Burada demo video. Və bəzi ekran görüntüləri:

Proses Explorer

InterSystems IRIS-də Python Gateway

Proses redaktoru

InterSystems IRIS-də Python Gateway

Quraşdırma

  1. Sizə InterSystems IRIS 2019.2+ lazımdır.
  2. PythonGateway v0.8+ quraşdırın (yalnız tələb olunur isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Anbardan ObjectScript kodunu yeniləyin.
  4. İcra etmək do ##class(isc.py.util.Jupyter).Install() və göstərişlərə əməl edin.

Documentation.

Tapıntılar

MLToolkit modelləri və əməliyyat mühitini birləşdirməyə yönəlmiş alətlər toplusudur ki, qurulmuş modellər birbaşa biznes proseslərinizdə asanlıqla istifadə olunsun. Python Gateway MLToolkit-in bir hissəsidir və Python dili ilə inteqrasiyanı təmin edir, Python-da yaradılmış istənilən maşın öyrənmə alqoritmlərini (bir çox Məlumat Alimləri üçün əsas mühit) idarə etməyə, tez adaptiv, robotik analitik AI yaratmaq üçün çoxsaylı hazır kitabxanalardan istifadə etməyə imkan verir. InterSystems platforması IRIS-də ML həlləri.

References

MLToolkit

MLToolkit istifadəçi qrupu InterSystems korporativ GitHub təşkilatının bir hissəsi kimi yaradılmış şəxsi GitHub deposudur. Python Gateway daxil olmaqla MLToolkit komponentlərini quraşdıran, öyrənən və ya artıq istifadə edən xarici istifadəçilərə ünvanlanır. Qrup marketinq, istehsal, tibb və bir çox digər sənaye sahələrində bir sıra tətbiq edilmiş işlərə (mənbə kodu və test məlumatları ilə) malikdir. ML Toolkit istifadəçi qrupuna qoşulmaq üçün aşağıdakı ünvana qısa e-məktub göndərin: [e-poçt qorunur] və məktubunuza aşağıdakı məlumatları daxil edin:

  • GitHub istifadəçi adı
  • Təşkilat (işləyir və ya oxuyursan)
  • Vəzifə (təşkilatınızdakı faktiki mövqeyiniz, ya “Tələbə” və ya “Müstəqil”).
  • Ölkə

Məqaləni oxuyan və süni intellekt və maşın öyrənmə mexanizmlərinin işlənib hazırlanması və ya yerləşdirilməsi platforması kimi InterSystems IRIS ilə maraqlananlar üçün sizi müəssisənizi maraqlandıran mümkün ssenariləri müzakirə etməyə dəvət edirik. Biz sizin müəssisənizin ehtiyaclarını asanlıqla təhlil edəcəyik və birgə fəaliyyət planını müəyyən edəcəyik; AI/ML ekspert qrupumuzun əlaqə e-poçt ünvanı – [e-poçt qorunur].

Mənbə: www.habr.com

Добавить комментарий