Lango la Python katika InterSystems IRIS

Nakala hii inahusu Python Gateway, mradi wa jamii wa chanzo huria kwa jukwaa la data la InterSystems IRIS. Mradi huu hukuruhusu kupanga algorithms zozote za ujifunzaji za mashine iliyoundwa katika Python (mazingira makuu ya Wanasayansi wengi wa Data), tumia maktaba nyingi zilizotengenezwa tayari kuunda haraka masuluhisho ya AI / ML yanayoweza kubadilika, ya kirobotiki kwenye jukwaa la InterSystems IRIS. Katika makala hii, nitaonyesha jinsi InterSystems IRIS inaweza kuandaa michakato katika Python, kuwasiliana kwa ufanisi data ya njia mbili, na kuunda michakato ya biashara ya akili.

Mpango

  1. Utangulizi.
  2. Zana.
  3. Ufungaji
  4. API.
  5. Kushirikiana.
  6. Daftari ya Jupyter.
  7. Hitimisho.
  8. Viungo.
  9. MLToolkit.

Utangulizi

Python ni lugha ya programu ya kiwango cha juu, yenye madhumuni ya jumla inayolenga kuboresha tija ya wasanidi programu na usomaji wa msimbo. Katika safu hii ya vifungu, nitajadili uwezekano wa kutumia Python kwenye jukwaa la InterSystems IRIS, lengo kuu la nakala hii likiwa ni matumizi ya Python kama lugha ya kuunda na kuendesha mifano ya kujifunza mashine.

Kujifunza kwa mashine (ML) ni darasa la mbinu za akili za bandia, kipengele cha tabia ambacho sio suluhisho la moja kwa moja la tatizo, lakini kujifunza katika mchakato wa kutatua matatizo mengi sawa.

Kanuni za ujifunzaji wa mashine na miundo inazidi kuwa ya kawaida. Kuna sababu nyingi za hili, lakini yote inakuja kwa upatikanaji, unyenyekevu na kufikia matokeo ya vitendo. Kuunganisha au hata mtandao wa neva ni teknolojia mpya?

Bila shaka sivyo, lakini siku hizi hakuna haja ya kuandika mamia ya maelfu ya mistari ya kanuni ili kuendesha mfano mmoja, na gharama ya kuunda na kutumia mifano inakuwa kidogo na kidogo.

Zana zinabadilika - wakati hatuna zana kamili za AI/ML za GUI-centric, maendeleo ambayo tumeona na aina zingine nyingi za mifumo ya habari, kama vile BI (kutoka kwa nambari ya uandishi hadi kutumia mifumo na suluhisho zinazoweza kusanidi za GUI) pia inazingatiwa katika zana za kuunda AI/ML. Tayari tumepitisha hatua ya kuandika msimbo na leo tunatumia mifumo kujenga na kutoa mafunzo kwa mifano.

Maboresho mengine, kama vile uwezo wa kusambaza muundo uliofunzwa mapema ambapo mtumiaji wa mwisho lazima amalize tu kufundisha muundo kwenye data yake mahususi, pia hurahisisha kuanza na kujifunza kwa mashine. Maendeleo haya hurahisisha ujifunzaji wa mashine ya kujifunza kwa wataalamu na makampuni kwa ujumla.

Kwa upande mwingine, tunakusanya data zaidi na zaidi. Kwa jukwaa la data lililounganishwa kama InterSystems IRIS, maelezo haya yote yanaweza kutayarishwa mara moja na kutumika kama ingizo kwa miundo ya kujifunza kwa mashine.

Kwa kuhamia kwenye wingu, kuzindua miradi ya AI/ML inakuwa rahisi zaidi kuliko hapo awali. Tunaweza tu kutumia rasilimali tunazohitaji. Zaidi ya hayo, kutokana na ulinganifu unaotolewa na majukwaa ya wingu, tunaweza kuokoa muda uliotumika.

Lakini vipi kuhusu matokeo? Hapa ndipo mambo yanakuwa magumu zaidi. Kuna zana nyingi za kujenga mifano, ambayo nitazungumzia ijayo. Kujenga mfano mzuri si rahisi, lakini nini baadaye? Kupata faida kwa kutumia mtindo wa biashara pia ni kazi isiyo ya kawaida. Mzizi wa tatizo ni mgawanyo wa mizigo ya kazi ya uchambuzi na shughuli, na mifano ya data. Tunapofundisha mfano, kwa kawaida tunafanya kwenye data ya kihistoria. Lakini mahali pa muundo uliojengwa ni katika usindikaji wa data ya shughuli. Je, mtindo bora zaidi wa kugundua miamala ya ulaghai una manufaa gani ikiwa tutauendesha mara moja kwa siku? Walaghai hao wameondoka na pesa kwa muda mrefu. Tunahitaji kutoa mafunzo kwa kielelezo kuhusu data ya kihistoria, lakini pia tunahitaji kuitumia kwa wakati halisi kwenye data mpya inayoingia ili michakato yetu ya biashara iweze kuchukua hatua kulingana na ubashiri uliotolewa na muundo huo.

ML Toolkit ni seti ya zana ambayo inalenga kufanya hivyo tu: kuunganisha miundo na mazingira ya shughuli ili miundo iliyojengwa itumike kwa urahisi moja kwa moja katika michakato ya biashara yako. Python Gateway ni sehemu ya ML Toolkit na hutoa ushirikiano na lugha ya Python (sawa na jinsi R Gateway, kuwa sehemu ya ML Toolkit hutoa ushirikiano na lugha ya R).

Chombo

Kabla hatujaendelea, ningependa kuelezea zana na maktaba chache za Python ambazo tutatumia baadaye.

Teknolojia

  • Python ni lugha ya programu iliyotafsiriwa, ya hali ya juu, yenye madhumuni ya jumla. Faida kuu ya lugha ni maktaba yake kubwa ya maktaba za hisabati, ML na AI. Kama ObjectScript, ni lugha inayoelekezwa kwa kitu, lakini kila kitu kinafafanuliwa kwa nguvu badala ya kitakwimu. Pia kila kitu ni kitu. Makala ya baadaye huchukua ujuzi wa kupita kiasi na lugha. Ikiwa unataka kuanza kujifunza, napendekeza kuanza na nyaraka.
  • Kwa mazoezi yetu ya baadaye, weka Chatu 3.6.7 biti 64.
  • IDE: Ninatumia PyCharm, lakini kwa ujumla wao mengi. Ikiwa unatumia Atelier, kuna programu-jalizi ya Eclipse ya watengenezaji wa Python. Ikiwa unatumia Msimbo wa VS, kuna kiendelezi cha Python.
  • Daftari: Badala ya IDE, unaweza kuandika na kushiriki hati zako kwenye daftari za mtandaoni. Maarufu zaidi kati yao ni jupyter.

Maktaba

Hapa kuna orodha (isiyo kamili) ya maktaba za kujifunza mashine:

  • numpy - kifurushi cha msingi kwa mahesabu sahihi.
  • Panda - miundo ya data ya utendaji wa juu na zana za uchambuzi wa data.
  • matplotlib - uundaji wa grafu.
  • Mzaliwa wa kwanza - taswira ya data kulingana na matplotlib.
  • Sklearn - njia za kujifunza mashine.
  • XGBoost - algoriti za kujifunza kwa mashine ndani ya mfumo wa mbinu ya kukuza gradient.
  • Gensim - NLP.
  • Keras - mitandao ya neva.
  • mtiririko wa tensor - jukwaa la kuunda mifano ya kujifunza kwa mashine.
  • PyTorch ni jukwaa la kuunda miundo ya kujifunza kwa mashine, inayolenga Python.
  • nyoka - PMML kutoka kwa mifano mbalimbali.

Teknolojia za AI/ML hufanya biashara kuwa bora zaidi na inayoweza kubadilika. Aidha, leo teknolojia hizi zinakuwa rahisi kuendeleza na kutekeleza. Anza kujifunza kuhusu teknolojia za AI/ML na jinsi zinavyoweza kusaidia shirika lako kukua.

Ufungaji

Kuna njia kadhaa za kufunga na kutumia Python Gateway:

  • ОБ
    • Windows
    • Linux
    • Mac
  • Docker
    • Tumia picha kutoka DockerHub
    • Unda mwonekano wako mwenyewe

Bila kujali njia ya usakinishaji, utahitaji msimbo wa chanzo. Mahali pekee pa kupakua msimbo ni ukurasa wa matoleo. Ina matoleo thabiti yaliyojaribiwa, chukua ya hivi punde zaidi. Kwa sasa ni 0.8, lakini baada ya muda kutakuwa na mpya. Usipange/kupakua hazina, pakua toleo jipya zaidi.

ОБ

Ikiwa unaweka Python Gateway kwenye mfumo wa uendeshaji, basi kwanza (bila kujali mfumo wa uendeshaji) unahitaji kufunga Python. Kwa hii; kwa hili:

  1. Sakinisha Python 3.6.7 64 bit. Inapendekezwa kusakinisha Python kwenye saraka ya chaguo-msingi.
  2. Sakinisha moduli dill: pip install dill.
  3. Pakua msimbo wa ObjectScript (yaani. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) kwa eneo lolote lenye bidhaa. Iwapo unataka eneo lililopo kusaidia bidhaa, endesha: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Mahali callout DLL/SO/DYLIB kwa folda bin mfano wako wa InterSystems IRIS. Faili ya maktaba lazima ipatikane katika njia iliyorejeshwa write ##class(isc.py.Callout).GetLib().

Windows

  1. Hakikisha kutofautiana kwa mazingira PYTHONHOME pointi kwa Python 3.6.7.
  2. Hakikisha kutofautisha kwa mazingira ya mfumo ni PATH ina kutofautiana PYTHONHOME (au saraka inayoelekeza).

Linux (Debian/Ubuntu)

  1. Angalia kuwa kutofautisha kwa mazingira ni PATH ina /usr/lib ΠΈ /usr/lib/x86_64-linux-gnu. Tumia faili /etc/environment kuweka vigezo vya mazingira.
  2. Katika kesi ya makosa undefined symbol: _Py_TrueStruct weka mpangilio PythonLib. pia katika Tayari kuna sehemu ya Utatuzi.

Mac

  1. Hivi sasa ni Python 3.6.7 pekee ndiyo inayotumika python.org. Angalia kutofautiana PATH.

Ikiwa ulibadilisha anuwai za mazingira, anzisha tena bidhaa yako ya InterSystems.

Docker

Kutumia vyombo kuna faida kadhaa:

  • Kubebeka
  • Ufanisi
  • Insulation
  • Wepesi
  • Kutobadilika

Angalia hii mfululizo wa makala kwa habari zaidi kuhusu kutumia Docker na bidhaa za InterSystems.

Ujenzi wote wa Python Gateway kwa sasa ni msingi wa chombo 2019.4.

Picha tayari

Endesha: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestkupakua na kuendesha Python Gateway na Toleo la Jumuiya ya InterSystems IRIS. Ni hayo tu.

Unda mwonekano wako mwenyewe

Ili kuunda picha ya kizimbani, endesha kwenye mzizi wa hazina: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Kwa chaguo-msingi, picha imejengwa kulingana na picha store/intersystems/iris-community:2019.4.0.383.0, hata hivyo unaweza kubadilisha hii kwa kuweka variable IMAGE.
Ili kuunda kutoka kwa InterSystems IRIS, endesha: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Baada ya hii unaweza kuendesha picha ya docker:

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

Ikiwa unatumia picha kulingana na Toleo la Jumuiya ya InterSystems IRIS, unaweza kuacha ufunguo.

Maoni

  • Mchakato wa mtihani isc.py.test.Process huhifadhi idadi ya picha kwenye saraka ya muda. Unaweza kutaka kubadilisha njia hii kwa saraka iliyowekwa. Ili kufanya hivyo, hariri mpangilio WorkingDir kubainisha saraka iliyowekwa.
  • Ili kufikia terminal kukimbia: docker exec -it irispy sh.
  • Ufikiaji wa Tovuti ya Usimamizi wa Mfumo kwa kuingia SuperUser/SYS.
  • Ili kusimamisha chombo, endesha: docker stop irispy && docker rm --force irispy.

Inathibitisha usakinishaji

Mara tu umesakinisha Python Gateway, inafaa kuangalia ikiwa inafanya kazi. Tekeleza nambari hii katika terminal ya IRIS ya InterSystems:

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

Matokeo yake yanapaswa kuwa: HELLO - Thamani ya kutofautisha ya Python x. Ikiwa hali ya kurudi sc ni kosa au var tupu, angalia Readme - Sehemu ya utatuzi.

API

Python Gateway imewekwa na umethibitisha kuwa inafanya kazi. Ni wakati wa kuanza kuitumia!
Kiolesura kuu cha Python ni isc.py.Main. Inatoa vikundi vifuatavyo vya njia (zote zinarudi %Status):

  • Utekelezaji wa Kanuni
  • Uhamisho wa data
  • Msaidizi

Utekelezaji wa Kanuni

Njia hizi hukuruhusu kutekeleza nambari ya Python ya kiholela.

SimpleString

SimpleString - hii ndiyo njia kuu. Inachukua hoja 4 za hiari:

  • code - mstari wa msimbo wa kutekeleza. Mstari wa mlisho wa herufi: $c(10).
  • returnVariable - jina la kigezo cha kurudi.
  • serialization - jinsi ya kusasisha returnVariable. 0 - kamba (chaguo-msingi), 1 - repr.
  • result - Rejea ya ByRef ya kutofautisha ambayo thamani imeandikwa returnVariable.

Hapo juu tulifanya:

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

Katika mfano huu, tunapeana tofauti ya Python x thamani Hello na unataka kurudisha thamani ya utofauti wa Python x kwa utofauti wa ObjectScript var.

TekelezaMsimbo

ExecuteCode ni mbadala salama na isiyo na vizuizi SimpleString.
Mistari katika jukwaa la InterSystems IRIS ina vibambo 3 pekee, na ikiwa ungependa kutekeleza kipande kirefu cha msimbo, unahitaji kutumia nyuzi.
Hoja mbili zinakubaliwa:

  • code - mstari au mkondo wa nambari ya Python kutekelezwa.
  • variable - (hiari) inapeana matokeo ya utekelezaji code tofauti hii ya Python.

Mfano wa kutumia:

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

Katika mfano huu, tunazidisha 2 kwa 3 na kuandika matokeo kwa kutofautiana kwa Python y.

Uhamisho wa data

Pitisha data kwenda na kutoka Python.

Python -> InterSystems IRIS

Kuna njia 4 za kupata thamani ya utofauti wa Python katika InterSystems IRIS, kulingana na usanifu unaohitaji:

  • String kwa aina rahisi za data na utatuzi.
  • Repr kwa kuhifadhi vitu rahisi na utatuzi.
  • JSON kwa udanganyifu rahisi wa data kwenye upande wa InterSystems IRIS.
  • Pickle kuokoa vitu.

Njia hizi hukuruhusu kupata vijiti kutoka kwa Python kama kamba au mitiririko.

  • GetVariable(variable, serialization, .stream, useString) -pata serialization kutofautiana variable Π² stream. Ikiwa useString ni 1 na usanifu huwekwa kwenye kamba, kisha kamba inarudishwa na sio mkondo.
  • GetVariableJson(variable, .stream, useString) - pata usanifu wa JSON wa kutofautisha.
  • GetVariablePickle(variable, .stream, useString, useDill) -pata kachumbari (au Dill) usanifu wa kibadilika.

Hebu jaribu kupata variable yetu y.

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

InterSystems IRIS -> Python

Inapakia data kutoka kwa InterSystems IRIS hadi Python.

  • ExecuteQuery(query, variable, type, namespace) - huunda seti ya data (pandas dataframe au list) kutoka kwa hoja ya sql na kuiweka kwa tofauti ya Python variable. Mfuko wa plastiki isc.py lazima ipatikane katika eneo hilo namespace - ombi litatekelezwa hapo.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - hupakia data ya kimataifa global kutoka kwa usajili start kwa end katika Python kama aina ya kutofautisha type: list, au panda dataframe. Maelezo ya hoja za hiari mask na labels inapatikana katika nyaraka za darasa na hazina Hati za Uhamisho wa Data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - hupakia data ya darasa class kutoka kwa kitambulisho start kwa end katika Python kama aina ya kutofautisha type: list, au panda dataframe. properties β€” orodha (iliyotenganishwa na koma) ya sifa za darasa zinazohitaji kupakiwa kwenye seti ya data. Masks inaungwa mkono * ΠΈ ?. Chaguomsingi - * (mali zote). Mali %%CLASSNAME kupuuzwa.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - hupakia data ya meza table kutoka kwa kitambulisho start kwa end katika Python.

ExecuteQuery - zima (swala lolote sahihi la SQL litapitishwa kwa Python). Hata hivyo, ExecuteGlobal na kanga zake ExecuteClass ΠΈ ExecuteTable kazi na idadi ya vikwazo. Wana kasi zaidi (mara 3-5 zaidi kuliko dereva wa ODBC na mara 20 kwa kasi zaidi ExecuteQuery) Taarifa zaidi kwa Hati za Uhamisho wa Data.
Njia hizi zote zinasaidia uhamishaji wa data kutoka eneo lolote. Mfuko wa plastiki isc.py lazima ipatikane katika eneo linalolengwa.

TekelezaQuery

ExecuteQuery(request, variable, type, namespace) - kuhamisha matokeo ya swali lolote sahihi la SQL kwa Python. Hii ndiyo njia ya polepole zaidi ya kuhamisha data. Itumie kama ExecuteGlobal na kanga zake hazipatikani.

Hoja:

  • query - swali la sql.
  • variable - jina la tofauti ya Python ambayo data imeandikwa.
  • type - list au panda dataframe.
  • namespace - eneo ambalo ombi litatekelezwa.

TekelezaGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - kupita kimataifa katika Python.

Hoja:

  • global - jina la kimataifa bila ^
  • variable - jina la tofauti ya Python ambayo data imeandikwa.
  • type - list au panda dataframe.
  • start - usajili wa kwanza wa ulimwengu. Lazima %Integer.
  • end - usajili wa mwisho wa ulimwengu. Lazima %Integer.
  • mask - barakoa ya thamani ya kimataifa. Mask inaweza kuwa fupi kuliko idadi ya sehemu katika ulimwengu (katika hali ambayo sehemu za mwisho zitarukwa). Jinsi ya kuunda mask:
    • + kupitisha thamani kama ilivyo.
    • - ruka thamani.
    • b - Aina ya Boolean (0 - False, wengine wote - True).
    • d - Tarehe (kutoka $horolog, kwenye Windows kutoka 1970, kwenye Linux kutoka 1900).
    • t - Muda ($horologi, sekunde baada ya saa sita usiku).
    • m β€” Muhuri wa saa (mfuatano wa mfuatano wa YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
  • labels β€” %Orodha ya majina ya safu wima. Kipengele cha kwanza ni jina la usajili.
  • namespace - eneo ambalo ombi litatekelezwa.

TekelezaClass

Funga juu ExecuteGlobal. Kulingana na ufafanuzi wa darasa, huandaa simu ExecuteGlobal na kumwita.

ExecuteClass(class, variable, type, start, end, properties, namespace) - kupitisha data ya darasa katika Python.

Hoja:

  • class - jina la darasa
  • variable - jina la tofauti ya Python ambayo data imeandikwa.
  • type - list au panda dataframe.
  • start - Kitambulisho cha kuanzia.
  • end - Kitambulisho cha mwisho
  • properties β€” orodha (iliyotenganishwa na koma) ya sifa za darasa zinazohitaji kupakiwa kwenye seti ya data. Masks inaungwa mkono * ΠΈ ?. Chaguomsingi - * (mali zote). Mali %%CLASSNAME kupuuzwa.
  • namespace - eneo ambalo ombi litatekelezwa.

Mali yote hupitishwa kama ilivyo isipokuwa mali ya aina %Date, %Time, %Boolean ΠΈ %TimeStamp - zinabadilishwa kuwa madarasa yanayolingana ya Python.

Jedwali la kutekeleza

Funga juu ExecuteClass. Hutafsiri jina la jedwali katika jina la darasa na simu ExecuteClass. Sahihi:

ExecuteTable(table, variable, type, start, end, properties, namespace) - kupitisha data ya jedwali kwa Python.

Hoja:

  • table - jina la meza.
    Hoja zingine zote hupitishwa kama ilivyo ExecuteClass.

Vidokezo

  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable kazi kwa kasi sawa.
  • ExecuteGlobal Mara 20 haraka kuliko ExecuteQuery kwenye seti kubwa za data (muda wa uhamisho > sekunde 0.01).
  • ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable fanya kazi kwenye ulimwengu na muundo huu: ^global(key) = $lb(prop1, prop2, ..., propN) ambapo key - nambari kamili.
  • Kwa ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable anuwai ya maadili inayotumika %Date inalingana na anuwai mktime na inategemea OS (madirisha: 1970-01-01, linux 1900-01-01, mac) Tumia %TimeStampkuhamisha data nje ya safu hii au kutumia mfumo wa data wa pandas kwa sababu hiki ni kizuizi cha orodha pekee.
  • Kwa ExecuteGlobal, ExecuteClass ΠΈ ExecuteTable hoja zote isipokuwa chanzo cha data (kimataifa, darasa au jedwali) na utofauti ni wa hiari.

mifano

Darasa la mtihani isc.py.test.Person ina njia inayoonyesha chaguzi zote za uhamishaji 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)

Piga njia do ##class(isc.py.test.Person).Test() kuona jinsi njia zote za kuhamisha data zinavyofanya kazi.

Mbinu za Msaidizi

  • GetVariableInfo(variable, serialization, .defined, .type, .length) β€” pata habari kuhusu kutofautisha: iwe imefafanuliwa, darasa lake na urefu wa kuratibu.
  • GetVariableDefined(variable, .defined) - ikiwa kutofautisha kunafafanuliwa.
  • GetVariableType(variable, .type) - pata darasa la kutofautisha.
  • GetStatus() - pata na uondoe ubaguzi wa mwisho kwa upande wa Python.
  • GetModuleInfo(module, .imported, .alias) β€” pata utofauti wa moduli na hali ya kuingiza.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - pata habari kuhusu kitendakazi.

Kushirikiana

Umejifunza jinsi ya kupiga Python Gateway kutoka kwa terminal, sasa wacha tuanze kuitumia katika uzalishaji. Msingi wa kuingiliana na Python katika hali hii ni isc.py.ens.Operation. Inaturuhusu:

  • Tekeleza nambari kwenye Python
  • Hifadhi / Rejesha muktadha wa Python
  • Pakia na upokee data kutoka kwa Python

Kimsingi, operesheni ya Python ni kifuniko isc.py.Main. Operesheni isc.py.ens.Operation hutoa uwezo wa kuingiliana na mchakato wa Python kutoka kwa bidhaa za InterSystems IRIS. Maswali matano yanaungwa mkono:

  • isc.py.msg.ExecutionRequest kutekeleza nambari ya Python. Inarudi isc.py.msg.ExecutionResponse na matokeo ya utekelezaji na maadili ya vigezo vilivyoombwa.
  • isc.py.msg.StreamExecutionRequest kutekeleza nambari ya Python. Inarudi isc.py.msg.StreamExecutionResponse matokeo ya utekelezaji na maadili ya vigezo vilivyoombwa. Analogi isc.py.msg.ExecutionRequest, lakini inakubali na kurudisha mitiririko badala ya mifuatano.
  • isc.py.msg.QueryRequest kusambaza matokeo ya kutekeleza swala la SQL. Inarudi Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest kwa kupitisha data ya kimataifa/ya darasa/meza. Inarudi Ens.Response.
  • isc.py.msg.SaveRequest kuokoa muktadha wa Python. Inarudi Ens.StringResponse yenye kitambulisho cha muktadha.
  • isc.py.msg.RestoreRequest kurejesha muktadha wa Python.

    Aidha, isc.py.ens.Operation ina mipangilio miwili:

    • Initializer β€” kuchagua darasa linalotumia kiolesura isc.py.init.Abstract. Inaweza kutumika kupakia kazi, modules, madarasa, nk. Inatekelezwa mara moja mchakato unapoanza.
    • PythonLib - (Linux pekee) ikiwa unaona makosa wakati wa kupakia, weka thamani yake libpython3.6m.so au hata katika njia kamili ya maktaba ya Python.

Uundaji wa michakato ya biashara

Kuna madarasa mawili yanayopatikana ambayo yanawezesha maendeleo ya michakato ya biashara:

  • isc.py.ens.ProcessUtils hukuruhusu kutoa vidokezo kutoka kwa shughuli na ubadilishanaji tofauti.
  • isc.py.util.BPEmulator inafanya iwe rahisi kujaribu michakato ya biashara na Python. Inaweza kutekeleza mchakato wa biashara (sehemu za Python) katika mchakato wa sasa.

Ubadilishaji Unaobadilika

Michakato yote ya biashara iliyorithiwa kutoka isc.py.ens.ProcessUtils, inaweza kutumia njia GetAnnotation(name) kupata thamani ya maelezo ya shughuli kwa jina lake. Ufafanuzi wa shughuli unaweza kuwa na vigeuzo ambavyo vitahesabiwa kwa upande wa InterSystems IRIS kabla ya kupitishwa kwa Python. Hapa kuna syntax ya uingizwaji tofauti:

  • ${class:method:arg1:...:argN} - njia ya kupiga simu
  • #{expr} β€” Tekeleza msimbo katika lugha ya ObjectScript.

Mfano unapatikana katika mchakato wa biashara ya majaribio isc.py.test.Process, kwa mfano, katika shughuli Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Katika mfano huu:

  • #{process.WorkDirectory} inarudisha mali ya WorkDirectory ya kitu process, ambayo ni mfano wa darasa isc.py.test.Process hizo. mchakato wa sasa wa biashara.
  • ${%PopulateUtils:Integer:1:100} wito mbinu Integer tabaka la %PopulateUtils, kupitisha hoja 1 ΠΈ 100, kurudisha nambari kamili isiyo ya kawaida katika safu 1...100.

Mtihani wa mchakato wa biashara

Bidhaa za majaribio na michakato ya biashara ya majaribio zinapatikana kwa chaguomsingi kama sehemu ya Lango la Python. Ili kuzitumia:

  1. Kwenye terminal ya OS, endesha: pip install pandas matplotlib seaborn.
  2. Katika terminal ya InterSystems IRIS, endesha: do ##class(isc.py.test.CannibalizationData).Import() kujaza data ya mtihani.
  3. Kuzindua bidhaa isc.py.test.Production.
  4. Tuma aina ya ombi Ens.Request Π² isc.py.test.Process.

Wacha tuone jinsi yote yanavyofanya kazi pamoja. Fungua isc.py.test.Process katika mhariri wa BPL:

Lango la Python katika InterSystems IRIS

Utekelezaji wa Kanuni

Changamoto muhimu zaidi ni kutekeleza nambari ya Python:

Lango la Python katika InterSystems IRIS

Hoja imetumika isc.py.msg.ExecutionRequest, hizi ni sifa zake:

  • Code - Nambari ya Python.
  • SeparateLines - kama kugawanya msimbo katika mistari kwa ajili ya utekelezaji. $c(10) (n) hutumika kutenganisha mifuatano. Tafadhali kumbuka kuwa haipendekezwi kuchakata ujumbe mzima mara moja, kipengele hiki cha kukokotoa kimekusudiwa tu kuchakata def na usemi wa mistari mingi sawa. Chaguomsingi 0.
  • Variables - orodha iliyotenganishwa kwa koma ya vigeu ambavyo vitaongezwa kwa jibu.
  • Serialization - Jinsi ya kusasisha vigezo ambavyo tunataka kurudisha. Chaguo: Str, Repr, JSON, Pickle ΠΈ Dill, chaguo-msingi Str.

Kwa upande wetu, tunaweka tu mali Code, kwa hivyo mali zingine zote hutumia maadili chaguo-msingi. Tunaiweka kwa kupiga simu process.GetAnnotation("Import pandas"), ambayo wakati wa utekelezaji hurejesha kidokezo baada ya uwekaji mbadala kufanywa. Baada ya yote, kanuni import pandas as pd itapitishwa kwa Python. GetAnnotation inaweza kuwa muhimu kwa kupata hati za Python za safu nyingi, lakini hakuna vizuizi kwa njia hii ya kupata nambari. Unaweza kuweka mali Code kwa njia yoyote inayofaa kwako.

Kupata Vigezo

Changamoto nyingine ya kuvutia kutumia isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Lango la Python katika InterSystems IRIS

Huhesabu Matrix ya Uunganisho kwenye upande wa Python na kutoa utofauti corrmat rudi kwa InterSystems IRIS katika umbizo la JSON kwa kuweka mali ya ombi:

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

Tunaweza kuona matokeo katika Visual Trace:

Lango la Python katika InterSystems IRIS

Na ikiwa tunahitaji thamani hii katika BP, tunaweza kuipata kama hii: callresponse.Variables.GetAt("corrmat").

Uhamisho wa data

Ifuatayo, wacha tuzungumze juu ya kuhamisha data kutoka kwa InterSystems IRIS hadi Python; maombi yote ya uhamishaji wa data yanatekeleza kiolesura. isc.py.msg.DataRequestambayo hutoa sifa zifuatazo:

  • Variable - Tofauti ya Python ambayo data imeandikwa.
  • Type - aina tofauti: dataframe (pandas dataframe) au list.
  • Namespace - eneo ambalo tunapokea data. Mfuko wa plastiki isc.py inapaswa kupatikana katika eneo hili. Hii inaweza kuwa eneo lisilo na usaidizi wa bidhaa.

Kulingana na kiolesura hiki, madarasa 4 ya maombi yanatekelezwa:

  • isc.py.msg.QueryRequest - kuweka mali Query kutuma swali la SQL.
  • isc.py.msg.ClassRequest - kuweka mali Class kupitisha data ya darasa.
  • isc.py.msg.TableRequest - kuweka mali Table kuhamisha data ya meza.
  • isc.py.msg.GlobalRequest - kuweka mali Global kwa uhamishaji wa data wa kimataifa.

Katika mchakato wa mtihani, angalia shughuli RAWAmbapo isc.py.msg.QueryRequest inavyoonyeshwa kwa vitendo.

Lango la Python katika InterSystems IRIS

Kuokoa / Kurejesha Muktadha wa Python

Mwishowe, tunaweza kuhifadhi muktadha wa Python katika InterSystems IRIS, kufanya hivi tutatuma isc.py.msg.SaveRequest na hoja:

  • Mask β€” Vigezo vinavyolingana na kinyago pekee ndivyo vinavyohifadhiwa. Imeungwa mkono * ΠΈ ?. Mfano: "Data*, Figure?"... Chaguomsingi *.
  • MaxLength - Urefu wa juu wa kibadilishaji kilichohifadhiwa. Ikiwa utayarishaji wa kigezo ni mrefu, utapuuzwa. Weka hadi 0 ili kupata vigeuzo vya urefu wowote. Chaguomsingi $$$MaxStringLength.
  • Name - Jina la muktadha (hiari).
  • Description - Maelezo ya muktadha (hiari).

Anarudi Ens.StringResponse с Id muktadha uliohifadhiwa. Katika mchakato wa mtihani, angalia shughuli Save Context.

Ombi linalohusiana isc.py.msg.RestoreRequest hupakia muktadha kutoka kwa InterSystems IRIS hadi Python:

  • ContextId - kitambulisho cha muktadha.
  • Clear - futa muktadha kabla ya kurejesha.

Jupyter Daftari

Jupyter Daftari ni programu huria ya wavuti inayokuruhusu kuunda na kuchapisha madaftari yenye msimbo, taswira na maandishi. Python Gateway hukuruhusu kutazama na kuhariri michakato ya BPL katika mfumo wa Daftari la Jupyter. Tafadhali kumbuka kuwa mtekelezaji wa kawaida wa Python 3 anatumika kwa sasa.

Kiendelezi hiki kinachukulia kuwa vidokezo vina msimbo wa Python na hutumia majina ya shughuli kama mada yaliyotangulia. Sasa inawezekana kuendeleza michakato ya biashara ya PythonGateway katika Jupyter Notebook. Hapa kuna kinachowezekana:

  • Unda michakato mpya ya biashara
  • Futa michakato ya biashara
  • Unda shughuli mpya
  • Badilisha shughuli
  • Futa shughuli

Hapa video ya demo. Na viwambo vichache:

Mchakato wa Kuchunguza

Lango la Python katika InterSystems IRIS

Mhariri wa mchakato

Lango la Python katika InterSystems IRIS

Ufungaji

  1. Utahitaji InterSystems IRIS 2019.2+.
  2. Sakinisha PythonGateway v0.8+ (inahitajika tu isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints ΠΈ isc.py.ens.ProcessUtils).
  3. Sasisha nambari ya ObjectScript kutoka kwa hazina.
  4. Tekeleza do ##class(isc.py.util.Jupyter).Install() na kufuata mawaidha.

Nyaraka.

Matokeo

MLToolkit ni seti ya zana ambazo lengo lake ni kuchanganya miundo na mazingira ya shughuli ili miundo iliyojengwa itumike kwa urahisi moja kwa moja katika michakato ya biashara yako. Python Gateway ni sehemu ya MLToolkit na hutoa ushirikiano na lugha ya Python, huku kuruhusu kupanga algorithms yoyote ya kujifunza mashine iliyoundwa katika Python (mazingira kuu ya Wanasayansi wengi wa Data), tumia maktaba nyingi zilizotengenezwa tayari kuunda haraka AI ya uchambuzi, ya robotic / Suluhu za ML kwenye jukwaa la InterSystems IRIS.

marejeo

MLToolkit

Kikundi cha watumiaji wa MLToolkit ni hazina ya kibinafsi ya GitHub iliyoundwa kama sehemu ya shirika la GitHub la shirika la InterSystems. Inakusudiwa watumiaji wa nje wanaosakinisha, kujifunza, au tayari kutumia vijenzi vya MLToolkit, ikiwa ni pamoja na Lango la Python. Kikundi kina idadi ya kesi zilizotekelezwa (na nambari ya chanzo na data ya majaribio) katika nyanja za uuzaji, utengenezaji, dawa na tasnia zingine nyingi. Ili kujiunga na Kikundi cha Watumiaji cha ML Toolkit, tafadhali tuma barua pepe fupi kwa anwani ifuatayo: [barua pepe inalindwa] na ujumuishe taarifa ifuatayo katika barua yako:

  • Jina la mtumiaji la GitHub
  • Shirika (unafanya kazi au kusoma)
  • Nafasi (nafasi yako halisi katika shirika lako, ama "Mwanafunzi" au "Kujitegemea").
  • Nchi

Kwa wale ambao wamesoma nakala na wanavutiwa na uwezo wa InterSystems IRIS kama jukwaa la kukuza au kukaribisha akili bandia na injini za kujifunza mashine, tunakualika kujadili hali zinazowezekana ambazo zinavutia biashara yako. Tutafurahi kuchambua mahitaji ya kampuni yako na kuamua kwa pamoja mpango wa utekelezaji; Anwani ya barua pepe ya timu yetu ya wataalamu wa AI/ML - [barua pepe inalindwa].

Chanzo: mapenzi.com

Kuongeza maoni