Python Gateway hauv InterSystems IRIS

Kab lus no yog hais txog Python Gateway, qhov qhib qhov project hauv zej zog rau InterSystems IRIS cov ntaub ntawv platform. Qhov phiaj xwm no tso cai rau koj los tsim kho txhua lub tshuab kev kawm algorithms tsim hauv Python (qhov chaw tseem ceeb rau ntau Cov Kws Tshawb Fawb), siv ntau cov tsev qiv ntawv npaj tau sai sai los tsim kev hloov kho, neeg hlau analytical AI / ML cov kev daws teeb meem ntawm InterSystems IRIS platform. Hauv tsab xov xwm no, kuv yuav qhia seb InterSystems IRIS tuaj yeem tsim cov txheej txheem hauv Python, sib txuas lus tau zoo ob txoj hauv kev, thiab tsim cov txheej txheem kev lag luam ntse.

Npaj

  1. Taw qhia
  2. Cov cuab yeej.
  3. Txhim Kho
  4. Qib API.
  5. Kev sib koom tes.
  6. Jupyter Phau Ntawv.
  7. Cov lus xaus.
  8. Txuas.
  9. MLToolkit.

Taw qhia

Python yog qib siab, cov hom phiaj dav dav dav dav dav dav rau kev txhim kho cov khoom tsim tawm thiab kev nyeem cov lej. Hauv cov kab lus no, kuv yuav tham txog qhov muaj peev xwm ntawm kev siv Python ntawm InterSystems IRIS platform, nrog rau lub ntsiab lus tseem ceeb ntawm tsab xov xwm no yog kev siv Python ua hom lus rau kev tsim thiab khiav tshuab kev kawm.

Kev kawm tshuab (ML) yog ib chav kawm ntawm kev txawj ntse txuj ci, cov yam ntxwv ntawm qhov tsis yog qhov kev daws teeb meem ncaj qha, tab sis kev kawm hauv cov txheej txheem ntawm kev daws teeb meem ntau yam zoo sib xws.

Kev kawm tshuab algorithms thiab qauv tau dhau los ua ntau dua. Muaj ntau qhov laj thawj rau qhov no, tab sis nws tag nrho los ntawm kev nkag mus tau yooj yim, yooj yim thiab ua tiav cov txiaj ntsig tau zoo. Puas yog pawg lossis txawm tias neural network qauv ua qauv tshiab?

Tau kawg tsis yog, tab sis tam sim no tsis tas yuav tsum sau ntau pua txhiab kab ntawm cov lej los khiav ib tus qauv, thiab tus nqi ntawm kev tsim thiab siv cov qauv tau dhau los ua tsawg dua.

Cov cuab yeej hloov zuj zus - thaum peb tsis muaj tag nrho GUI-centric AI / ML cov cuab yeej, qhov kev vam meej peb tau pom nrog ntau lwm chav kawm ntawm cov ntaub ntawv xov xwm, xws li BI (los ntawm kev sau cov cai mus rau kev siv lub moj khaum thiab GUI-centric configurable daws teeb meem), yog kuj pom nyob rau hauv cov cuab yeej tsim AI/ML. Peb twb dhau theem ntawm kev sau code thiab niaj hnub no peb siv lub moj khaum los tsim thiab cob qhia cov qauv.

Lwm yam kev txhim kho, xws li kev muaj peev xwm los faib cov qauv ua ntej kev cob qhia uas cov neeg siv kawg tsuas yog ua kom tiav kev cob qhia tus qauv ntawm lawv cov ntaub ntawv tshwj xeeb, kuj ua rau nws yooj yim dua los pib nrog kev kawm tshuab. Cov kev nce qib no ua rau kev kawm tshuab kev kawm yooj yim dua rau cov kws tshaj lij thiab rau cov tuam txhab feem ntau.

Ntawm qhov tod tes, peb tab tom sau cov ntaub ntawv ntau thiab ntau dua. Nrog rau cov ntaub ntawv sib koom ua ke xws li InterSystems IRIS, tag nrho cov ntaub ntawv no tuaj yeem npaj tam sim thiab siv los ua cov tswv yim rau cov qauv kev kawm tshuab.

Nrog rau kev txav mus rau huab, pib AI / ML tej yaam num tau yooj yim dua puas tau. Peb tsuas tuaj yeem siv cov peev txheej uas peb xav tau. Ntxiv mus, ua tsaug rau qhov sib piv uas muab los ntawm huab platforms, peb tuaj yeem txuag lub sijhawm siv.

Tab sis li cas txog cov txiaj ntsig? Qhov no yog qhov uas tej yam yuav nyuaj dua. Muaj ntau yam cuab yeej rau kev tsim qauv, uas kuv yuav tham txog tom ntej. Kev tsim tus qauv zoo tsis yog yooj yim, tab sis yuav ua li cas ntxiv? Ua kom tau nyiaj los ntawm kev siv tus qauv ua lag luam kuj yog ib txoj haujlwm tsis tseem ceeb. Lub hauv paus ntawm qhov teeb meem yog kev sib cais ntawm kev txheeb xyuas thiab kev ua haujlwm ua haujlwm, thiab cov qauv ntaub ntawv. Thaum peb cob qhia tus qauv, peb feem ntau ua nws ntawm cov ntaub ntawv keeb kwm. Tab sis qhov chaw rau tus qauv tsim yog nyob rau hauv kev lag luam cov ntaub ntawv ua. Yuav ua li cas zoo yog qhov zoo tshaj plaws kev dag ntxias kev lag luam qauv yog tias peb khiav nws ib hnub? Cov scammers tau ntev los lawm nrog cov nyiaj. Peb yuav tsum tau cob qhia tus qauv ntawm cov ntaub ntawv keeb kwm, tab sis peb kuj yuav tsum tau siv nws nyob rau lub sijhawm ntawm cov ntaub ntawv tuaj tshiab kom peb cov txheej txheem kev lag luam tuaj yeem ua raws li qhov kev kwv yees ua los ntawm tus qauv.

ML Toolkit yog ib txheej ntawm cov cuab yeej uas lub hom phiaj ua li ntawd: sib koom ua qauv thiab ib puag ncig kev lag luam kom cov qauv tsim tau yooj yim siv ncaj qha rau hauv koj cov txheej txheem kev lag luam. Python Gateway yog ib feem ntawm ML Toolkit thiab muab kev koom ua ke nrog cov lus Python (zoo ib yam li R Gateway, yog ib feem ntawm ML Toolkit muab kev koom ua ke nrog R hom lus).

Cov Cuab Yeej Siv

Ua ntej peb mus ntxiv, kuv xav piav ob peb yam cuab yeej Python thiab cov tsev qiv ntawv uas peb yuav siv tom qab.

ntawm technology

  • Python yog ib qho kev txhais lus, qib siab, cov hom phiaj dav dav dav dav. Qhov zoo ntawm cov lus yog nws lub tsev qiv ntawv loj ntawm lej, ML thiab AI cov tsev qiv ntawv. Zoo li ObjectScript, nws yog hom lus taw qhia, tab sis txhua yam yog txhais tsis muaj zog es tsis yog statically. Tsis tas li ntawd txhua yam yog khoom. Cov ntawv tom qab ntawd suav tias yog kev paub dhau los ntawm cov lus. Yog tias koj xav pib kawm, kuv xav kom pib nrog cov ntaub ntawv.
  • Rau peb cov kev tawm dag zog tom ntej, teeb Python 3.6.7 64 ntsis.
  • IDE: Kuv siv PyCharm, tab sis feem ntau lawv ntau. Yog tias koj siv Atelier, muaj Eclipse plugin rau Python developers. Yog tias koj siv VS Code, muaj qhov txuas ntxiv rau Python.
  • Phau ntawv: Hloov ntawm IDE, koj tuaj yeem sau thiab qhia koj cov ntawv sau hauv online. Qhov nrov tshaj plaws ntawm lawv yog jupyter.

Cov Tsev Qiv Ntawv

Ntawm no yog ib daim ntawv teev npe (tsis-tag nrho) ntawm cov tsev qiv ntawv kawm tshuab:

  • Quaj - Cov pob khoom tseem ceeb rau kev suav tseeb.
  • pandas - Cov ntaub ntawv ua haujlwm siab thiab cov cuab yeej tshuaj xyuas cov ntaub ntawv.
  • matplotlib - creation ntawm graphs.
  • Seab Ua Si - cov ntaub ntawv visualization raws li matplotlib.
  • Sklearn - cov kev kawm tshuab.
  • XGBoost - Kev kawm tshuab algorithms nyob rau hauv lub moj khaum ntawm gradient boosting methodology.
  • Gensim β€” NLP.
  • Keras - neural networks.
  • tensor ntws - lub platform rau tsim cov qauv kev kawm tshuab.
  • PyTorch yog lub platform tsim cov qauv kev kawm tshuab, tsom rau Python.
  • Nyoka - PMML los ntawm ntau yam qauv.

AI / ML thev naus laus zis ua rau kev lag luam muaj txiaj ntsig thiab hloov tau. Tsis tas li ntawd, niaj hnub no cov thev naus laus zis tau dhau los ua yooj yim los tsim thiab siv. Pib kawm txog AI/ML technologies thiab lawv yuav pab tau koj lub koom haum loj hlob li cas.

chaw

Muaj ntau ntau txoj hauv kev rau nruab thiab siv Python Gateway:

  • OS
    • lub qhov rais
    • Linux
    • Mac
  • docker
    • Siv ib daim duab los ntawm DockerHub
    • Tsim koj tus kheej saib

Tsis hais txog ntawm txoj kev teeb tsa, koj yuav xav tau qhov chaws. Qhov chaw tsuas yog rub tawm tus lej yog nplooj ntawv tso tawm. Nws muaj cov kev ntsuam xyuas ruaj khov tso tawm, tsuas yog siv qhov tseeb. Thaum lub sijhawm nws yog 0.8, tab sis dhau sijhawm yuav muaj cov tshiab. Tsis txhob clone/download lub repository, download tau qhov tseeb tso tawm.

OS

Yog tias koj tab tom txhim kho Python Gateway ntawm lub operating system, tom qab ntawd ua ntej (tsis hais txog ntawm lub operating system) koj yuav tsum nruab Python. Rau qhov no:

  1. Nruab Python 3.6.7 64 ntsis. Nws raug nquahu kom nruab Python nyob rau hauv lub neej ntawd directory.
  2. Nruab lub module dill: pip install dill.
  3. Rub tawm ObjectScript code (i.e. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) rau txhua qhov chaw nrog cov khoom. Yog tias koj xav tau thaj chaw uas twb muaj lawm los txhawb cov khoom, khiav: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Qhov chaw callout DLL/SO/DYLIB rau nplaub tshev bin koj li InterSystems IRIS piv txwv. Cov ntaub ntawv tsev qiv ntawv yuav tsum muaj nyob rau hauv txoj kev rov qab los write ##class(isc.py.Callout).GetLib().

lub qhov rais

  1. Xyuas kom meej tias ib puag ncig hloov pauv PYTHONHOME taw tes rau Python 3.6.7.
  2. Xyuas kom tseeb tias qhov system ib puag ncig kuj sib txawv PATH muaj qhov sib txawv PYTHONHOME (los yog phau ntawv qhia nws taw qhia rau).

Linux (Debian / Ubuntu)

  1. Txheeb xyuas tias ib puag ncig hloov pauv tau PATH muaj /usr/lib ΠΈ /usr/lib/x86_64-linux-gnu. Siv cov ntaub ntawv /etc/environment los teeb tsa ib puag ncig hloov pauv.
  2. Thaum ua yuam kev undefined symbol: _Py_TrueStruct teeb qhov chaw PythonLib. kuj nyob rau hauv Nyeem muaj ib qho kev daws teeb meem.

Mac

  1. Tam sim no tsuas yog Python 3.6.7 txhawb nqa Nkaujntsej. Txheeb xyuas qhov sib txawv PATH.

Yog tias koj hloov qhov hloov pauv ib puag ncig, rov pib koj cov khoom lag luam InterSystems.

docker

Kev siv cov thawv ntim khoom muaj ntau qhov zoo:

  • Portability
  • Ua tau zoo
  • Rwb thaiv tsev
  • Lightness
  • Immutability

Tshawb xyuas qhov no series ntawm cov khoom Yog xav paub ntxiv txog kev siv Docker nrog InterSystems cov khoom.

Tag nrho Python Gateway tsim yog tam sim no ntim raws li 2019.4.

Npaj duab

Khiav: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestrub tawm thiab khiav Python Gateway nrog InterSystems IRIS Community Edition. Yog tag nrho.

Tsim koj tus kheej saib

Txhawm rau tsim cov duab docker, khiav hauv lub hauv paus ntawm qhov chaw cia khoom: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Los ntawm lub neej ntawd, daim duab yog tsim raws li daim duab store/intersystems/iris-community:2019.4.0.383.0, txawm li cas los xij koj tuaj yeem hloov qhov no los ntawm kev teeb tsa qhov sib txawv IMAGE.
Txhawm rau tsim los ntawm InterSystems IRIS, khiav: 'docker tsim --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Tom qab no koj tuaj yeem khiav cov duab docker:

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

Yog tias koj siv cov duab raws li InterSystems IRIS Community Edition, koj tuaj yeem tso tus yuam sij.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

  • Cov txheej txheem kuaj isc.py.test.Process txuag ib tug xov tooj ntawm cov duab rau ib ntus directory. Tej zaum koj yuav xav hloov txoj kev no mus rau cov npe mounted. Ua li no, kho qhov chaw WorkingDir qhia txog lub mounted directory.
  • Txhawm rau nkag mus rau lub davhlau ya nyob twg: docker exec -it irispy sh.
  • Nkag mus rau System Management Portal los ntawm kev nkag mus SuperUser/SYS.
  • Txhawm rau nres lub thawv, khiav: docker stop irispy && docker rm --force irispy.

Xyuas qhov installation

Thaum koj tau teeb tsa Python Gateway, nws tsim nyog xyuas tias nws ua haujlwm. Ua cov cai no hauv InterSystems IRIS davhlau ya nyob twg:

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

Qhov tshwm sim yuav tsum yog: HELLO - Python tus nqi sib txawv x. Yog cov xwm txheej rov qab los sc yog ib qho yuam kev los yog var npliag, check Readme - Kev daws teeb meem seem.

API

Python Gateway tau teeb tsa thiab koj tau txheeb xyuas tias nws ua haujlwm. Nws yog lub sijhawm los pib siv nws!
Lub ntsiab interface rau Python yog isc.py.Main. Nws muaj cov pab pawg hauv qab no ntawm txoj kev (txhua qhov rov qab los %Status):

  • Txoj Cai Ua Haujlwm
  • Kev hloov ntaub ntawv
  • Subsidiary

Txoj Cai Ua Haujlwm

Cov txheej txheem no tso cai rau koj los ua kom tiav Python code arbitrary.

SimpleString

SimpleString - qhov no yog txoj hauv kev tseem ceeb. Nws yuav siv 4 qhov kev sib cav xaiv tau:

  • code - kab code los ua. Line feed character: $c(10).
  • returnVariable - lub npe ntawm qhov hloov pauv rov qab.
  • serialization - yuav ua li cas serialize returnVariable. 0 β€” txoj hlua (default), 1 β€” repr.
  • result - ByRef siv rau qhov sib txawv uas tus nqi sau returnVariable.

Ua ntej peb tau ua:

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

Hauv qhov piv txwv no, peb muab rau Python sib txawv x lub ntsiab lus Hello thiab xav rov qab tus nqi ntawm Python sib txawv x mus rau qhov sib txawv ntawm ObjectScript var.

ExecuteCode

ExecuteCode yog ib qho kev nyab xeeb dua thiab tsis muaj kev txwv tsawg dua SimpleString.
Cov kab hauv InterSystems IRIS platform txwv rau 3 tus cim, thiab yog tias koj xav ua kom tiav cov lej ntev dua, koj yuav tsum siv cov xov.
Ob qhov kev sib cav raug lees txais:

  • code - kab lossis kwj ntawm Python code yuav tsum tau ua.
  • variable - (yeem) muab cov txiaj ntsig ntawm kev ua tiav code no Python variable.

Piv txwv rau siv:

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

Hauv qhov piv txwv no, peb muab 2 los ntawm 3 thiab sau cov txiaj ntsig mus rau Python sib txawv y.

Kev hloov ntaub ntawv

Hla cov ntaub ntawv mus thiab los ntawm Python.

Python -> InterSystems IRIS

Muaj 4 txoj hauv kev kom tau txais tus nqi ntawm Python sib txawv hauv InterSystems IRIS, nyob ntawm seb koj xav tau dab tsi:

  • String rau hom ntaub ntawv yooj yim thiab debugging.
  • Repr rau khaws cov khoom yooj yim thiab debugging.
  • JSON rau kev siv cov ntaub ntawv yooj yim ntawm InterSystems IRIS sab.
  • Pickle khaws cov khoom.

Cov txheej txheem no tso cai rau koj kom khaws cov hloov pauv ntawm Python ua txoj hlua lossis cov kwj deg.

  • GetVariable(variable, serialization, .stream, useString) - tau serialization sib txawv variable Π² stream. yog hais tias useString yog 1 thiab serialization muab tso rau ntawm ib txoj hlua, ces ib txoj hlua rov qab thiab tsis yog kwj.
  • GetVariableJson(variable, .stream, useString) - tau JSON serialization ntawm qhov sib txawv.
  • GetVariablePickle(variable, .stream, useString, useDill) -tau Pickle (los yog Dill) serialization ntawm qhov sib txawv.

Wb sim kom tau peb qhov sib txawv y.

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

InterSystems IRIS -> Python

Thauj cov ntaub ntawv los ntawm InterSystems IRIS rau hauv Python.

  • ExecuteQuery(query, variable, type, namespace) - tsim cov ntaub ntawv (pandas dataframe los yog list) los ntawm cov lus nug sql thiab teeb tsa nws mus rau Python sib txawv variable. Lub hnab yas isc.py yuav tsum muaj nyob rau hauv cheeb tsam namespace - qhov kev thov yuav raug ua tiav nyob rau ntawd.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - thauj cov ntaub ntawv thoob ntiaj teb global los ntawm subscript start rau end hauv Python raws li hom hloov pauv type: list, los yog pandas dataframe. Cov lus piav qhia ntawm kev sib cav xaiv tau mask thiab labels muaj nyob rau hauv chav kawm ntawv cov ntaub ntawv thiab repository Hloov cov ntaub ntawv.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - thauj cov ntaub ntawv hauv chav kawm class los ntawm id start rau end hauv Python raws li hom hloov pauv type: list, los yog pandas dataframe. properties - ib daim ntawv (sib cais los ntawm comma) ntawm cov khoom hauv chav kawm uas yuav tsum tau muab tso rau hauv cov ntaub ntawv teev. Qhov ncauj qhov ntswg txhawb * ΠΈ ?. Default - * (tag nrho cov khoom). Khoom %%CLASSNAME tsis quav ntsej.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - loads cov ntaub ntawv rooj table los ntawm id start rau end hauv Python.

ExecuteQuery - universal (ib qho lus nug SQL raug yuav raug xa mus rau Python). Txawm li cas los xij, ExecuteGlobal thiab nws wrappers ExecuteClass ΠΈ ExecuteTable ua haujlwm nrog ntau qhov kev txwv. Lawv nrawm dua (3-5 zaug sai dua li tus tsav tsheb ODBC thiab 20 npaug sai dua ExecuteQuery). Xav paub ntxiv ntawm Hloov cov ntaub ntawv.
Tag nrho cov txheej txheem no txhawb nqa cov ntaub ntawv hloov chaw los ntawm txhua qhov chaw. Lub hnab yas isc.py yuav tsum muaj nyob rau hauv lub hom phiaj.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - Hloov cov txiaj ntsig ntawm cov lus nug SQL raug rau Python. Qhov no yog txoj kev hloov cov ntaub ntawv qeeb tshaj plaws. Siv nws yog tias ExecuteGlobal thiab nws cov ntaub qhwv tsis muaj.

Cov lus sib cav:

  • query - sql lus nug.
  • variable - lub npe ntawm Python sib txawv uas cov ntaub ntawv sau.
  • type - list los yog Pandas dataframe.
  • namespace - thaj chaw uas qhov kev thov yuav raug ua tiav.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - dhau lub ntiaj teb no hauv Python.

Cov lus sib cav:

  • global - ntiaj teb no lub npe tsis muaj ^
  • variable - lub npe ntawm Python sib txawv uas cov ntaub ntawv sau.
  • type - list los yog Pandas dataframe.
  • start - thawj subscript ntawm lub ntiaj teb no. Yuav tsum tau %Integer.
  • end - qhov kawg subscript ntawm lub ntiaj teb no. Yuav tsum tau %Integer.
  • mask - lub ntsej muag muaj nuj nqis thoob ntiaj teb. Lub npog ntsej muag tuaj yeem luv dua li cov teb hauv ntiaj teb (qhov twg cov teb thaum kawg yuav hla). Yuav ua li cas format lub npog ntsej muag:
    • + hla tus nqi raws li yog.
    • - hla tus nqi.
    • b - Hom Boolean (0 - False, tag nrho cov so - True).
    • d - Hnub tim (los ntawm $ horolog, ntawm Windows los ntawm 1970, ntawm Linux los ntawm 1900).
    • t - Sijhawm ($ horolog, vib nas this tom qab ib tag hmo).
    • m - Lub Sijhawm Teev Sijhawm (hloov txoj hlua YEAR-HNUB-HNUB HOUR: MINUTE: SECOND).
  • labels -% Cov npe ntawm kab npe. Thawj lub ntsiab yog lub npe ntawm cov ntawv sau npe.
  • namespace - thaj chaw uas qhov kev thov yuav raug ua tiav.

ExecuteClass

Qhwv dhau ExecuteGlobal. Raws li chav kawm txhais, npaj hu ExecuteGlobal thiab hu nws.

ExecuteClass(class, variable, type, start, end, properties, namespace) - hla cov ntaub ntawv hauv chav kawm hauv Python.

Cov lus sib cav:

  • class - chav kawm npe
  • variable - lub npe ntawm Python sib txawv uas cov ntaub ntawv sau.
  • type - list los yog Pandas dataframe.
  • start - pib ID.
  • end β€” kawg Id
  • properties - ib daim ntawv (sib cais los ntawm comma) ntawm cov khoom hauv chav kawm uas yuav tsum tau muab tso rau hauv cov ntaub ntawv teev. Qhov ncauj qhov ntswg txhawb * ΠΈ ?. Default - * (tag nrho cov khoom). Khoom %%CLASSNAME tsis quav ntsej.
  • namespace - thaj chaw uas qhov kev thov yuav raug ua tiav.

Tag nrho cov khoom raug dhau raws li qhov tshwj tsis yog hom khoom %Date, %Time, %Boolean ΠΈ %TimeStamp - lawv tau hloov dua siab tshiab rau hauv cov chav kawm Python sib raug.

ExecuteTable

Qhwv dhau ExecuteClass. Txhais lub npe lub rooj rau hauv chav kawm npe thiab hu ExecuteClass. Kos npe:

ExecuteTable(table, variable, type, start, end, properties, namespace) - dhau cov ntaub ntawv rooj rau Python.

Cov lus sib cav:

  • table β€” table npe.
    Tag nrho lwm cov lus sib cav tau dhau los ua ExecuteClass.

Sau ntawv

  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable ua hauj lwm ceev sib npaug.
  • ExecuteGlobal 20 lub sij hawm sai dua ExecuteQuery ntawm cov ntaub ntawv loj (hloov sijhawm> 0.01 vib nas this).
  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable ua haujlwm hauv ntiaj teb nrog cov qauv no: ^global(key) = $lb(prop1, prop2, ..., propN) qhov twg key β€” ib integer.
  • rau ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable txhawb ntau yam ntawm cov nqi %Date sib raug rau ntau yam mktime thiab nyob ntawm OS (qhov rais: 1970-01-01 , ib. linux 1900-01-01, mac). Siv %TimeStamphloov cov ntaub ntawv sab nraud qhov ntau lossis siv pandas dataframe vim qhov no yog kev txwv cov npe nkaus xwb.
  • rau ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable tag nrho cov lus sib cav tshwj tsis yog cov ntaub ntawv qhov chaw (ntiaj teb, chav kawm lossis rooj) thiab qhov sib txawv yog xaiv tau.

piv txwv

Chav kawm isc.py.test.Person muaj ib txoj hauv kev qhia txog txhua qhov kev xaiv hloov cov ntaub ntawv:

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)

Hu rau txoj kev do ##class(isc.py.test.Person).Test() saib seb txhua txoj kev hloov cov ntaub ntawv ua haujlwm li cas.

Txoj Kev Pab

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - tau txais cov ntaub ntawv hais txog qhov sib txawv: seb nws puas tau txhais, nws chav kawm thiab qhov ntev serialization.
  • GetVariableDefined(variable, .defined) - seb qhov sib txawv yog txhais.
  • GetVariableType(variable, .type) - tau cov chav kawm ntawm qhov sib txawv.
  • GetStatus() - tau thiab tshem tawm qhov kev zam kawg ntawm sab Python.
  • GetModuleInfo(module, .imported, .alias) - tau txais cov qauv sib txawv thiab cov xwm txheej ntshuam.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - tau txais cov ntaub ntawv hais txog kev ua haujlwm.

Kev sib koom tes

Koj tau kawm yuav ua li cas hu rau Python Gateway ntawm lub davhlau ya nyob twg, tam sim no cia peb pib siv nws hauv kev tsim khoom. Lub hauv paus rau kev cuam tshuam nrog Python hauv hom no yog isc.py.ens.Operation. Nws tso cai rau peb:

  • Ua tus lej hauv Python
  • Txuag/Restore Python ntsiab lus
  • Load thiab txais cov ntaub ntawv los ntawm Python

Qhov tseeb, kev ua haujlwm Python yog qhov qhwv dhau isc.py.Main. Kev ua haujlwm isc.py.ens.Operation muab lub peev xwm los cuam tshuam nrog Python txheej txheem los ntawm InterSystems IRIS cov khoom. Tsib queries tau txais kev txhawb nqa:

  • isc.py.msg.ExecutionRequest los khiav Python code. Rov qab los isc.py.msg.ExecutionResponse nrog cov txiaj ntsig kev ua tiav thiab cov txiaj ntsig ntawm qhov thov hloov pauv.
  • isc.py.msg.StreamExecutionRequest los khiav Python code. Rov qab los isc.py.msg.StreamExecutionResponse qhov tshwm sim ntawm kev ua tiav thiab cov txiaj ntsig ntawm qhov kev thov hloov pauv. Analogue isc.py.msg.ExecutionRequest, tab sis lees txais thiab xa rov qab kwj es tsis txhob siv cov hlua.
  • isc.py.msg.QueryRequest xa cov txiaj ntsig ntawm kev ua tiav cov lus nug SQL. Rov qab los Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest kom dhau cov ntaub ntawv thoob ntiaj teb / chav kawm / rooj. Rov qab los Ens.Response.
  • isc.py.msg.SaveRequest kom txuag Python ntsiab lus. Rov qab los Ens.StringResponse nrog cov ntsiab lus ID.
  • isc.py.msg.RestoreRequest los kho cov ntsiab lus Python.

    Tsis tas li, isc.py.ens.Operation muaj ob txoj kev:

    • Initializer - xaiv ib chav kawm uas siv lub interface isc.py.init.Abstract. Nws tuaj yeem siv los thauj cov haujlwm, modules, chav kawm, thiab lwm yam. Nws raug tua ib zaug thaum cov txheej txheem pib.
    • PythonLib - (Linux nkaus xwb) yog tias koj pom qhov yuam kev thaum thauj khoom, teeb tsa nws tus nqi rau libpython3.6m.so los yog txawm nyob rau hauv tag nrho txoj kev mus rau lub tsev qiv ntawv Python.

Tsim cov txheej txheem kev lag luam

Muaj ob chav kawm uas pab txhawb kev txhim kho cov txheej txheem kev lag luam:

  • isc.py.ens.ProcessUtils tso cai rau koj rho tawm cov lus piav qhia los ntawm kev ua ub no nrog kev hloov pauv hloov pauv.
  • isc.py.util.BPEmulator ua kom yooj yim rau kev sim cov txheej txheem lag luam nrog Python. Nws tuaj yeem ua tiav cov txheej txheem ua lag luam (Python qhov chaw) hauv cov txheej txheem tam sim no.

Hloov pauv hloov pauv

Tag nrho cov txheej txheem lag luam tau txais los ntawm isc.py.ens.ProcessUtils, tuaj yeem siv txoj kev GetAnnotation(name) kom tau txais cov haujlwm annotation tus nqi los ntawm nws lub npe. Cov lus piav qhia ua haujlwm tuaj yeem muaj qhov sib txawv uas yuav suav nrog ntawm InterSystems IRIS sab ua ntej xa mus rau Python. Nov yog cov syntax rau kev hloov pauv hloov pauv:

  • ${class:method:arg1:...:argN} - txoj kev hu
  • #{expr} - Ua cov cai hauv ObjectScript lus.

Ib qho piv txwv muaj nyob rau hauv cov txheej txheem kev ua lag luam isc.py.test.Process, piv txwv li, hauv kev ua si Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Hauv qhov piv txwv no:

  • #{process.WorkDirectory} rov qab cov cuab yeej WorkDirectory ntawm cov khoom process, uas yog ib qho piv txwv ntawm chav kawm isc.py.test.Process cov. txheej txheem kev lag luam tam sim no.
  • ${%PopulateUtils:Integer:1:100} hu ib txoj kev Integer chav kawm %PopulateUtils, hla kev sib cav 1 ΠΈ 100, rov qab ib qho random integer hauv qhov ntau 1...100.

Kuaj cov txheej txheem ua lag luam

Cov khoom kuaj thiab kuaj cov txheej txheem ua lag luam yog muaj los ntawm lub neej ntawd ua ib feem ntawm Python Gateway. Yuav siv lawv:

  1. Hauv OS davhlau ya nyob twg, khiav: pip install pandas matplotlib seaborn.
  2. Hauv InterSystems IRIS davhlau ya nyob twg, khiav: do ##class(isc.py.test.CannibalizationData).Import() los sau cov ntaub ntawv xeem.
  3. Tua tawm cov khoom isc.py.test.Production.
  4. Xa hom thov Ens.Request Π² isc.py.test.Process.

Cia peb saib seb nws ua haujlwm li cas ua ke. Qhib isc.py.test.Process hauv BPL editor:

Python Gateway hauv InterSystems IRIS

Txoj Cai Ua Haujlwm

Qhov kev sib tw tseem ceeb tshaj plaws yog ua tiav Python code:

Python Gateway hauv InterSystems IRIS

Cov lus nug siv isc.py.msg.ExecutionRequest, ntawm no yog nws cov khoom:

  • Code - Python code.
  • SeparateLines - seb puas yuav faib cov cai rau hauv kab rau kev ua tiav. $c(10) (n) yog siv los cais cov hlua. Thov nco ntsoov tias nws tsis pom zoo kom ua tiav tag nrho cov lus ib zaug, txoj haujlwm no tsuas yog npaj los ua haujlwm def thiab cov kab lus zoo sib xws. Default 0.
  • Variables - ib daim ntawv teev npe sib cais ntawm qhov sib txawv uas yuav muab ntxiv rau cov lus teb.
  • Serialization - Yuav ua li cas serialize qhov sib txawv uas peb xav rov qab. Kev xaiv: Str, Repr, JSON, Pickle ΠΈ Dill, lub neej ntawd Str.

Hauv peb qhov xwm txheej, peb tsuas yog teeb tsa cov cuab yeej Code, yog li tag nrho lwm yam khoom siv lub neej ntawd muaj nuj nqis. Peb teev nws los ntawm kev hu process.GetAnnotation("Import pandas"), uas thaum lub sijhawm khiav rov qab cov lus piav qhia tom qab hloov pauv hloov pauv tau ua tiav. Tom qab tag nrho, lub code import pandas as pd yuav dhau mus rau Python. GetAnnotation tej zaum yuav muaj txiaj ntsig zoo rau kev tau txais ntau kab Python scripts, tab sis tsis muaj kev txwv rau txoj kev tau txais cov cai no. Koj tuaj yeem teeb tsa cov cuab yeej Code nyob rau hauv txhua txoj kev yooj yim rau koj.

Tau txais Variables

Lwm nthuav kev sib tw siv isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway hauv InterSystems IRIS

Nws suav cov Correlation Matrix ntawm Python sab thiab rho tawm qhov sib txawv corrmat rov qab mus rau InterSystems IRIS hauv JSON hom los ntawm kev teeb tsa cov khoom thov:

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

Peb tuaj yeem pom cov txiaj ntsig hauv Visual Trace:

Python Gateway hauv InterSystems IRIS

Thiab yog tias peb xav tau tus nqi no hauv BP, peb tuaj yeem tau txais nws zoo li no: callresponse.Variables.GetAt("corrmat").

Kev hloov ntaub ntawv

Tom ntej no, cia peb tham txog kev hloov cov ntaub ntawv los ntawm InterSystems IRIS rau Python; txhua qhov kev thov rau cov ntaub ntawv hloov pauv siv lub interface isc.py.msg.DataRequestuas muab cov khoom nram qab no:

  • Variable - Python sib txawv rau cov ntaub ntawv sau.
  • Type - variable yam: dataframe (pandas dataframe) los yog list.
  • Namespace - thaj chaw uas peb tau txais cov ntaub ntawv. Lub hnab yas isc.py yuav tsum muaj nyob hauv cheeb tsam no. Qhov no tej zaum yuav yog ib cheeb tsam uas tsis muaj kev txhawb nqa khoom.

Raws li qhov kev sib tshuam no, 4 chav kawm ntawm kev thov raug siv:

  • isc.py.msg.QueryRequest - teem lub cuab yeej Query xa cov lus nug SQL.
  • isc.py.msg.ClassRequest - teem lub cuab yeej Class kom dhau cov ntaub ntawv hauv chav kawm.
  • isc.py.msg.TableRequest - teeb khoom Table hloov cov ntaub ntawv rooj.
  • isc.py.msg.GlobalRequest - teeb khoom Global rau kev hloov ntaub ntawv thoob ntiaj teb.

Hauv cov txheej txheem xeem, saib cov haujlwm RAWqhov twg isc.py.msg.QueryRequest qhia hauv kev ua.

Python Gateway hauv InterSystems IRIS

Txuag/Restoring Python Context

Thaum kawg, peb tuaj yeem txuag Python cov ntsiab lus hauv InterSystems IRIS, ua qhov no peb yuav xa isc.py.msg.SaveRequest nrog kev sib cav:

  • Mask - Tsuas yog qhov sib txawv uas phim lub npog ntsej muag tau txais kev cawmdim. Txhawb nqa * ΠΈ ?... Piv txwv: "Data*, Figure?"... Default *.
  • MaxLength - Qhov ntev tshaj plaws ntawm qhov hloov pauv tau khaws cia. Yog tias qhov serialization ntawm qhov sib txawv ntev dua, nws yuav tsis quav ntsej. Teem rau 0 kom tau txais qhov sib txawv ntawm txhua qhov ntev. Default $$$MaxStringLength.
  • Name - Lub npe ntsiab lus (yeem).
  • Description - Cov lus piav qhia ntawm cov ntsiab lus (yeem).

Rov qab los Ens.StringResponse с Id khaws tseg cov ntsiab lus. Hauv cov txheej txheem xeem, saib cov haujlwm Save Context.

Hais txog kev thov isc.py.msg.RestoreRequest thauj cov ntsiab lus los ntawm InterSystems IRIS rau hauv Python:

  • ContextId - Cov ntsiab lus txheeb xyuas.
  • Clear - tshem cov ntsiab lus ua ntej rov kho dua.

Jupyter Phau Ntawv

Jupyter Phau Ntawv yog ib daim ntawv thov qhib lub vev xaib uas tso cai rau koj los tsim thiab tshaj tawm cov phau ntawv uas muaj cov lej, kev pom, thiab cov ntawv nyeem. Python Gateway tso cai rau koj saib thiab kho cov txheej txheem BPL hauv daim ntawv Jupyter Notebook. Thov nco ntsoov tias qhov qub Python 3 executor yog tam sim no siv.

Qhov kev txuas ntxiv no xav tias cov lus piav qhia muaj Python code thiab siv cov npe ua haujlwm raws li cov npe ua ntej. Tam sim no muaj peev xwm tsim PythonGateway cov txheej txheem kev lag luam hauv Jupyter Notebook. Nov yog qhov ua tau:

  • Tsim cov txheej txheem lag luam tshiab
  • Tshem tawm cov txheej txheem kev lag luam
  • Tsim cov haujlwm tshiab
  • Hloov cov dej num
  • Tshem tawm cov haujlwm

no demo video. Thiab ob peb screenshots:

Txheej txheem Explorer

Python Gateway hauv InterSystems IRIS

Tus txheej txheem editor

Python Gateway hauv InterSystems IRIS

chaw

  1. Koj yuav xav tau InterSystems IRIS 2019.2+.
  2. Nruab PythonGateway v0.8+ (tsuas yog xav tau isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints ΠΈ isc.py.ens.ProcessUtils).
  3. Hloov kho ObjectScript code los ntawm qhov chaw cia khoom.
  4. Ua do ##class(isc.py.util.Jupyter).Install() thiab ua raws li cov lus qhia.

Ntaub ntawv.

tshawb pom

MLToolkit yog ib txheej ntawm cov cuab yeej uas nws lub hom phiaj yog los ua ke cov qauv thiab kev lag luam ib puag ncig kom cov qauv tsim tau yooj yim siv ncaj qha rau hauv koj cov txheej txheem kev lag luam. Python Gateway yog ib feem ntawm MLToolkit thiab muab kev koom ua ke nrog cov lus Python, tso cai rau koj los tsim kho txhua lub tshuab kev kawm algorithms tsim nyob rau hauv Python (qhov chaw tseem ceeb rau ntau Cov Kws Tshawb Fawb), siv ntau cov tsev qiv ntawv npaj tau sai sai tsim kev hloov kho, neeg hlau analytical AI / ML cov kev daws teeb meem ntawm InterSystems platform IRIS.

ua tim khawv

MLToolkit

Cov pab pawg neeg siv MLToolkit yog qhov chaw khaws cia GitHub ntiag tug tsim los ua ib feem ntawm InterSystems koom haum GitHub. Nws yog npaj rau cov neeg siv sab nraud uas nruab, kawm, lossis twb tau siv MLToolkit cov khoom, suav nrog Python Gateway. Cov pab pawg muaj ntau qhov teeb meem (nrog rau cov cai thiab cov ntaub ntawv xeem) hauv kev lag luam, kev tsim khoom, tshuaj thiab ntau lwm yam lag luam. Txhawm rau koom nrog ML Toolkit User Group, thov xa email luv rau qhov chaw nyob hauv qab no: [email tiv thaiv] thiab suav nrog cov ntaub ntawv hauv qab no hauv koj tsab ntawv:

  • GitHub username
  • Lub koom haum (koj ua haujlwm lossis kawm)
  • Txoj hauj lwm (koj txoj haujlwm tiag tiag hauv koj lub koom haum, xws li "Student" lossis "Independent").
  • lub teb chaws

Rau cov neeg uas tau nyeem tsab xov xwm thiab txaus siab rau lub peev xwm ntawm InterSystems IRIS ua lub platform rau kev tsim lossis hosting txawj ntse txawj ntse thiab tshuab kawm tshuab, peb caw koj los tham txog cov xwm txheej uas txaus siab rau koj lub lag luam. Peb yuav zoo siab los soj ntsuam cov kev xav tau ntawm koj lub tuam txhab thiab sib koom ua ke txiav txim siab txog kev npaj ua haujlwm; Hu rau email chaw nyob ntawm peb pab pawg kws tshaj lij AI / ML - [email tiv thaiv].

Tau qhov twg los: www.hab.com

Ntxiv ib saib