Den här artikeln handlar om Python Gateway, ett community-projekt med öppen källkod för InterSystems IRIS-dataplattform. Detta projekt låter dig orkestrera alla maskininlärningsalgoritmer skapade i Python (huvudmiljön för många dataforskare), använda många färdiga bibliotek för att snabbt skapa adaptiva, robotanalytiska AI/ML-lösningar på InterSystems IRIS-plattform. I den här artikeln kommer jag att visa hur InterSystems IRIS kan orkestrera processer i Python, effektivt kommunicera tvåvägsdata och skapa intelligenta affärsprocesser.
planen
Introduktion.
Verktyg.
Installation.
API.
Interoperabilitet.
Jupyter anteckningsbok.
Slutsatser.
Länkar.
MLToolkit.
Inledning
Python är ett högnivå, allmänt programmeringsspråk som syftar till att förbättra utvecklarens produktivitet och kodläsbarhet. I den här artikelserien kommer jag att diskutera möjligheterna att använda Python på InterSystems IRIS-plattformen, med huvudfokus för den här artikeln att använda Python som språk för att skapa och köra modeller för maskininlärning.
Maskininlärning (ML) är en klass av metoder för artificiell intelligens, vars karakteristiska drag inte är den direkta lösningen av ett problem, utan lärande i processen att lösa många liknande problem.
Maskininlärningsalgoritmer och -modeller blir allt vanligare. Det finns många anledningar till detta, men allt handlar om tillgänglighet, enkelhet och att uppnå praktiska resultat. Är klustring eller till och med neurala nätverksmodellering en ny teknik?
Naturligtvis inte, men nu för tiden finns det inget behov av att skriva hundratusentals rader kod för att köra en enda modell, och kostnaden för att skapa och använda modeller blir mindre och mindre.
Verktygen utvecklas - även om vi inte har helt GUI-centrerade AI/ML-verktyg, är de framsteg vi har sett med många andra klasser av informationssystem, som BI (från att skriva kod till att använda ramverk och GUI-centrerade konfigurerbara lösningar) , observeras även i verktyg för att skapa AI/ML. Vi har redan passerat stadiet att skriva kod och idag använder vi ramverk för att bygga och träna modeller.
Andra förbättringar, som möjligheten att distribuera en förtränad modell där slutanvändaren helt enkelt måste träna färdigt modellen på sin specifika data, gör det också lättare att komma igång med maskininlärning. Dessa framsteg gör inlärning av maskininlärning mycket enklare både för proffs och för företag i allmänhet.
Å andra sidan samlar vi in mer och mer data. Med en enhetlig dataplattform som InterSystems IRIS kan all denna information omedelbart förberedas och användas som input till maskininlärningsmodeller.
Med övergången till molnet blir det enklare än någonsin att lansera AI/ML-projekt. Vi kan bara konsumera de resurser vi behöver. Dessutom, tack vare parallelliseringen som erbjuds av molnplattformar, kan vi spara tid.
Men hur är det med resultaten? Det är här saker och ting blir mer komplicerade. Det finns många verktyg för att bygga modeller, som jag kommer att diskutera härnäst. Att bygga en bra modell är inte lätt, men vad händer sedan? Att tjäna pengar på att använda en affärsmodell är också en icke-trivial uppgift. Roten till problemet är separationen av analytiska och transaktionella arbetsbelastningar och datamodeller. När vi tränar en modell gör vi det oftast på historiska data. Men platsen för den konstruerade modellen är i transaktionsdatabehandling. Vad hjälper den bästa modellen för upptäckt av bedrägliga transaktioner om vi kör den en gång om dagen? Bedragarna har sedan länge lämnat med pengarna. Vi behöver träna modellen på historisk data, men vi måste också tillämpa den i realtid på ny inkommande data så att våra affärsprocesser kan agera på de förutsägelser som modellen gör.
ML Toolkit är en uppsättning verktyg som syftar till att göra just det: förena modeller och en transaktionsmiljö så att de byggda modellerna enkelt kan användas direkt i dina affärsprocesser. Python Gateway är en del av ML Toolkit och tillhandahåller integration med Python-språket (liknande hur R Gateway, som en del av ML Toolkit ger integration med R-språket).
Verktyg
Innan vi fortsätter skulle jag vilja beskriva några Python-verktyg och bibliotek som vi kommer att använda senare.
Teknik
Python är ett tolkat, allmänt programmeringsspråk på hög nivå. Den största fördelen med språket är dess stora bibliotek av matematiska, ML- och AI-bibliotek. Precis som ObjectScript är det ett objektorienterat språk, men allt definieras dynamiskt snarare än statiskt. Allt är också ett objekt. Senare artiklar förutsätter en övergående förtrogenhet med språket. Om du vill börja lära dig rekommenderar jag att börja med dokumentation.
IDE: Jag använder PyCharm, men i allmänhet de много. Om du använder Atelier finns det ett Eclipse-plugin för Python-utvecklare. Om du använder VS Code finns det en tillägg för Python.
Anteckningsbok: Istället för en IDE kan du skriva och dela dina skript i anteckningsböcker online. Den mest populära av dem är jupyter.
bibliotek
Här är en (icke uttömmande) lista över maskininlärningsbibliotek:
numpy — Ett grundläggande paket för exakta beräkningar.
pandas — Högpresterande datastrukturer och dataanalysverktyg.
AI/ML-teknik gör verksamheten mer effektiv och anpassningsbar. Dessutom blir dessa tekniker idag lättare att utveckla och implementera. Börja lära dig om AI/ML-tekniker och hur de kan hjälpa din organisation att växa.
Installation
Det finns flera sätt att installera och använda Python Gateway:
operativsystem
Windows
Linux
Mac
Hamnarbetare
Använd en bild från DockerHub
Skapa din egen look
Oavsett installationsmetod behöver du källkoden. Det enda stället att ladda ner koden är släpper sida. Den innehåller testade stabila utgåvor, ta bara den senaste. För tillfället är det 0.8, men med tiden kommer det nya. Klona/ladda inte ner förvaret, ladda ner den senaste versionen.
operativsystem
Om du installerar Python Gateway på ett operativsystem måste du först (oavsett operativsystem) installera Python. För detta:
Ladda ner ObjectScript-koden (dvs. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) till alla områden med produkter. Om du vill att ett befintligt område ska stödja produkter, kör: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
Plats bildtext DLL/SO/DYLIB till en mapp bin din InterSystems IRIS-instans. Biblioteksfilen måste vara tillgänglig i den returnerade sökvägen write ##class(isc.py.Callout).GetLib().
Windows
Se till att miljövariabeln PYTHONHOME pekar på Python 3.6.7.
Se till att systemmiljövariabeln är PATH innehåller en variabel PYTHONHOME (eller katalogen den pekar på).
Linux (Debian/Ubuntu)
Kontrollera att miljövariabeln är PATH den innehåller /usr/lib и /usr/lib/x86_64-linux-gnu. Använd fil /etc/environment för att ställa in miljövariabler.
Vid fel undefined symbol: _Py_TrueStruct ställ in inställningen PythonLib. Också i Viktigt det finns ett avsnitt om felsökning.
Mac
För närvarande stöds endast Python 3.6.7 python.org. Kontrollera variabeln PATH.
Om du ändrade miljövariabler, starta om din InterSystems-produkt.
Hamnarbetare
Att använda behållare har ett antal fördelar:
Bärbarhet
effektivitet
Isolering
Lätthet
Oföränderlighet
Kolla in det här serie artiklar för mer information om hur du använder Docker med InterSystems produkter.
Alla Python Gateway-byggen är för närvarande containerbaserade 2019.4.
Klar bild
Springa: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestför att ladda ner och köra Python Gateway med InterSystems IRIS Community Edition. Det är allt.
Skapa din egen look
För att bygga en docker-bild, kör i roten av förvaret: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Som standard byggs bilden utifrån bilden store/intersystems/iris-community:2019.4.0.383.0, men du kan ändra detta genom att ställa in en variabel IMAGE.
För att bygga från InterSystems IRIS, kör: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".
Om du använder en bild baserad på InterSystems IRIS Community Edition kan du utelämna nyckeln.
kommentarer
Testprocess isc.py.test.Process sparar ett antal bilder i en tillfällig katalog. Du kanske vill ändra den här sökvägen till den monterade katalogen. För att göra detta, redigera inställningen WorkingDir ange den monterade katalogen.
För att komma åt terminalkörningen: docker exec -it irispy sh.
Tillgång till System Management Portal genom inloggning SuperUser/SYS.
För att stoppa behållaren, kör: docker stop irispy && docker rm --force irispy.
Verifierar installationen
När du har installerat Python Gateway är det värt att kontrollera att det fungerar. Kör den här koden i InterSystems IRIS-terminal:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write var
Resultatet bör bli: HELLO — Python-variabelvärde x. Om returstatus sc är ett fel eller var tom, kontrollera Readme - avsnittet Felsökning.
API
Python Gateway är installerad och du har verifierat att den fungerar. Det är dags att börja använda det!
Huvudgränssnittet till Python är isc.py.Main. Den erbjuder följande grupper av metoder (alla returnerar %Status):
Kodexekvering
Dataöverföring
Extra
Kodexekvering
Dessa metoder låter dig exekvera godtycklig Python-kod.
SimpleString
SimpleString - detta är huvudmetoden. Det krävs 4 valfria argument:
code — rad kod att exekvera. Radmatningstecken: $c(10).
returnVariable — Namnet på variabeln som ska returneras.
serialization - hur man serialiserar returnVariable. 0 — sträng (standard), 1 — repr.
result — ByRef referens till variabeln som värdet skrivs in i returnVariable.
Ovan gjorde vi:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
I det här exemplet tilldelar vi en Python-variabel x betyder Hello och vill returnera värdet för en Python-variabel x till en ObjectScript-variabel var.
ExecuteCode
ExecuteCode är ett säkrare och mindre restriktivt alternativ SimpleString.
Rader i InterSystems IRIS-plattform är begränsade till 3 641 144 tecken, och om du vill exekvera en längre kod måste du använda trådar.
Två argument accepteras:
code — en rad eller ström av Python-kod som ska köras.
variable — (valfritt) tilldelar resultatet av utförandet code denna Python-variabel.
Exempel att använda:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").
I det här exemplet multiplicerar vi 2 med 3 och skriver resultatet till en Python-variabel y.
Dataöverföring
Skicka data till och från Python.
Python -> InterSystems IRIS
Det finns fyra sätt att få värdet av en Python-variabel i InterSystems IRIS, beroende på vilken serialisering du behöver:
String för enkla datatyper och felsökning.
Repr för lagring av enkla föremål och felsökning.
JSON för enkel datamanipulation på InterSystems IRIS-sidan.
Pickle för att spara objekt.
Dessa metoder låter dig hämta variabler från Python som en sträng eller strömmar.
GetVariable(variable, serialization, .stream, useString) - skaffa sig serialization variabel variable в stream. om useString är 1 och serialiseringen placeras på en sträng, då returneras en sträng och inte en ström.
GetVariableJson(variable, .stream, useString) — få JSON-serialisering av en variabel.
GetVariablePickle(variable, .stream, useString, useDill) -få Pickle (eller Dill) serialisering av en variabel.
Låt oss försöka få vår variabel y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6
InterSystems IRIS -> Python
Laddar data från InterSystems IRIS till Python.
ExecuteQuery(query, variable, type, namespace) - skapar en datauppsättning (pandas dataframe eller list) från sql-frågan och ställer in den till en Python-variabel variable. Plastpåse isc.py måste finnas i området namespace — begäran kommer att verkställas där.
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - laddar global data global från prenumeration start до end i Python som en typvariabel type: list, eller pandor dataframe. Beskrivning av valfria argument mask och labels tillgänglig i klassdokumentation och arkiv Dataöverföringsdokument.
ExecuteClass(class, variable, type, start, end, properties, namespace) - laddar klassdata class från id start до end i Python som en typvariabel type: list, eller pandor dataframe. properties — en lista (avgränsad med komma) över klassegenskaper som måste laddas in i datamängden. Masker stöds * и ?. Standard - * (alla fastigheter). Fast egendom %%CLASSNAME ignoreras.
ExecuteTable(table, variable, type, start, end, properties, namespace) - laddar tabelldata table från id start до end i Python.
ExecuteQuery — universal (alla korrekta SQL-frågor skickas till Python). Dock, ExecuteGlobal och dess omslag ExecuteClass и ExecuteTable arbeta med ett antal restriktioner. De är mycket snabbare (3-5 gånger snabbare än ODBC-drivrutinen och 20 gånger snabbare ExecuteQuery). Mer information på Dataöverföringsdokument.
Alla dessa metoder stöder dataöverföring från vilket område som helst. Plastpåse isc.py måste finnas i målområdet.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — överföra resultaten av en korrekt SQL-fråga till Python. Detta är den långsammaste dataöverföringsmetoden. Använd den om ExecuteGlobal och dess omslag är inte tillgängliga.
Argument:
query - sql-fråga.
variable — namnet på Python-variabeln som data skrivs in i.
type - list eller pandor dataframe.
namespace — Det område där begäran kommer att verkställas.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - passerar en global i Python.
Argument:
global - globalt namn utan ^
variable — namnet på Python-variabeln som data skrivs in i.
type - list eller pandor dataframe.
start — den första prenumerationen av den globala. Nödvändigtvis %Integer.
end — den sista prenumerationen av den globala. Nödvändigtvis %Integer.
mask — global värdemask. Masken kan vara kortare än antalet fält i den globala (i vilket fall kommer fälten i slutet att hoppas över). Så här formaterar du en mask:
+ skicka värdet som det är.
- hoppa över värde.
b — boolesk typ (0 - False, resten - True).
d — Datum (från $horolog, på Windows från 1970, på Linux från 1900).
t — Tid ($horolog, sekunder efter midnatt).
m — Tidsstämpel (formatsträng ÅR-MÅNAD-DAG TIMME:MINUT:SEKUND).
labels — %Lista med kolumnnamn. Det första elementet är namnet på subskriptet.
namespace — Det område där begäran kommer att verkställas.
ExecuteClass
Linda över ExecuteGlobal. Baserat på klassdefinitionen, förbereder ett samtal ExecuteGlobal och ringer honom.
variable — namnet på Python-variabeln som data skrivs in i.
type - list eller pandor dataframe.
start — start-ID.
end — slutlig Id
properties — en lista (avgränsad med komma) över klassegenskaper som måste laddas in i datamängden. Masker stöds * и ?. Standard - * (alla fastigheter). Fast egendom %%CLASSNAME ignoreras.
namespace — Det område där begäran kommer att verkställas.
Alla egenskaper skickas som de är utom typegenskaper %Date, %Time, %Boolean и %TimeStamp - de konverteras till motsvarande Python-klasser.
ExecuteTable
Linda över ExecuteClass. Översätter tabellnamnet till klassnamnet och anropar ExecuteClass. Signatur:
table — tabellnamn.
Alla andra argument skickas som de är ExecuteClass.
Anmärkningar
ExecuteGlobal, ExecuteClass и ExecuteTable arbeta lika snabbt.
ExecuteGlobal 20 gånger snabbare än ExecuteQuery på stora datamängder (överföringstid >0.01 sekunder).
ExecuteGlobal, ExecuteClass и ExecuteTable arbeta med globaler med denna struktur: ^global(key) = $lb(prop1, prop2, ..., propN) där key — ett heltal.
för ExecuteGlobal, ExecuteClass и ExecuteTable stödda värdeintervall %Date motsvarar räckvidden mktime och beror på OS (fönster: 1970-01-01, linux 1900-01-01, mac). Använda sig av %TimeStampatt överföra data utanför detta intervall eller använda pandas dataram eftersom detta är en begränsning i listan.
för ExecuteGlobal, ExecuteClass и ExecuteTable alla argument utom datakällan (global, klass eller tabell) och variabeln är valfria.
Примеры
Testklass isc.py.test.Person innehåller en metod som visar alla dataöverföringsalternativ:
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)
Kalla metoden do ##class(isc.py.test.Person).Test() för att se hur alla dataöverföringsmetoder fungerar.
Hjälpmetoder
GetVariableInfo(variable, serialization, .defined, .type, .length) — få information om variabeln: om den är definierad, dess klass och serialiseringslängd.
GetVariableDefined(variable, .defined) — om variabeln är definierad.
GetVariableType(variable, .type) — få klassen för variabeln.
GetStatus() - hämta och ta bort det sista undantaget på Python-sidan.
GetModuleInfo(module, .imported, .alias) — hämta modulvariabel och importstatus.
GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — få information om funktionen.
Interoperabilitet
Du har lärt dig hur man anropar Python Gateway från terminalen, låt oss nu börja använda den i produktionen. Grunden för att interagera med Python i detta läge är isc.py.ens.Operation. Det tillåter oss:
Kör kod i Python
Spara/återställ Python-sammanhang
Ladda och ta emot data från Python
I grund och botten är en Python-operation ett omslag isc.py.Main. Drift isc.py.ens.Operation ger möjlighet att interagera med Python-processen från InterSystems IRIS-produkter. Fem frågor stöds:
isc.py.msg.ExecutionRequest för att köra Python-kod. Returnerar isc.py.msg.ExecutionResponse med exekveringsresultatet och värdena för de begärda variablerna.
isc.py.msg.StreamExecutionRequest för att köra Python-kod. Returnerar isc.py.msg.StreamExecutionResponse resultatet av exekveringen och värdena för de begärda variablerna. Analog isc.py.msg.ExecutionRequest, men accepterar och returnerar strömmar istället för strängar.
isc.py.msg.QueryRequest för att överföra resultatet av exekvering av en SQL-fråga. Returnerar Ens.Response.
isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest för att skicka global/klass/tabelldata. Returnerar Ens.Response.
isc.py.msg.SaveRequest för att spara Python-sammanhang. Returnerar Ens.StringResponse med kontext-ID.
isc.py.msg.RestoreRequest för att återställa Python-kontexten.
Dessutom, isc.py.ens.Operation har två inställningar:
Initializer — välja en klass som implementerar gränssnittet isc.py.init.Abstract. Den kan användas för att ladda funktioner, moduler, klasser, etc. Den exekveras en gång när processen startar.
PythonLib - (Endast Linux) om du ser fel när du laddar, ställ in dess värde till libpython3.6m.so eller till och med i hela sökvägen till Python-biblioteket.
Skapande av affärsprocesser
Det finns två tillgängliga klasser som underlättar utvecklingen av affärsprocesser:
isc.py.ens.ProcessUtils låter dig extrahera kommentarer från aktiviteter med variabel substitution.
isc.py.util.BPEmulator gör det enkelt att testa affärsprocesser med Python. Den kan köra en affärsprocess (Python-delar) i den aktuella processen.
Variabel substitution
Alla affärsprocesser ärvt från isc.py.ens.ProcessUtils, kan använda metoden GetAnnotation(name) för att få aktivitetsnoteringsvärdet efter dess namn. Aktivitetskommentaren kan innehålla variabler som kommer att beräknas på InterSystems IRIS-sidan innan de skickas till Python. Här är syntaxen för variabelsubstitution:
${class:method:arg1:...:argN} - metodanrop
#{expr} — exekvera kod i ObjectScript-språk.
Ett exempel finns i testaffärsprocessen isc.py.test.Processtill exempel i aktivitet Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). I det här exemplet:
#{process.WorkDirectory} returnerar egenskapen WorkDirectory för objektet process, som är en instans av klassen isc.py.test.Process de där. nuvarande affärsprocess.
${%PopulateUtils:Integer:1:100} kallar en metod Integer klass %PopulateUtils, passerar argument 1 и 100, returnerar ett slumpmässigt heltal i intervallet 1...100.
Testa affärsprocess
Testprodukter och testverksamhetsprocesser är tillgängliga som standard som en del av Python Gateway. Så här använder du dem:
I OS-terminalen, kör: pip install pandas matplotlib seaborn.
I InterSystems IRIS-terminal, kör: do ##class(isc.py.test.CannibalizationData).Import() för att fylla i testdata.
Lansera produkter isc.py.test.Production.
Skicka begäran typ Ens.Request в isc.py.test.Process.
Låt oss se hur det hela fungerar tillsammans. Öppen isc.py.test.Process i BPL-redigeraren:
Kodexekvering
Den viktigaste utmaningen är att köra Python-kod:
Fråga använd isc.py.msg.ExecutionRequest, här är dess egenskaper:
Code — Python-kod.
SeparateLines — om koden ska delas upp i rader för exekvering. $c(10) (n) används för att separera strängar. Observera att det INTE rekommenderas att behandla hela meddelandet på en gång, denna funktion är endast avsedd att bearbeta def och liknande flerradsuttryck. Standard 0.
Variables — en kommaseparerad lista över variabler som kommer att läggas till i svaret.
Serialization — Hur man serialiserar de variabler som vi vill returnera. Alternativ: Str, Repr, JSON, Pickle и Dill, standard Str.
I vårt fall sätter vi bara fastigheten Code, så alla andra egenskaper använder standardvärdena. Vi ställer in det genom att ringa process.GetAnnotation("Import pandas"), som vid körning returnerar en anteckning efter att variabelsubstitution har utförts. När allt kommer omkring, koden import pandas as pd kommer att skickas till Python. GetAnnotation kan vara användbart för att erhålla flerradiga Python-skript, men det finns inga begränsningar för denna metod för att erhålla kod. Du kan ställa in egenskapen Code på något sätt som är bekvämt för dig.
Få variabler
En annan intressant utmaning att använda isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:
Den beräknar korrelationsmatrisen på Python-sidan och extraherar variabeln corrmat tillbaka till InterSystems IRIS i JSON-format genom att ställa in förfrågningsegenskaperna:
Variables: "corrmat"
Serialization: "JSON"
Vi kan se resultaten i Visual Trace:
Och om vi behöver det här värdet i BP kan vi få det så här: callresponse.Variables.GetAt("corrmat").
Dataöverföring
Låt oss sedan prata om att överföra data från InterSystems IRIS till Python; alla förfrågningar om dataöverföring implementerar gränssnittet isc.py.msg.DataRequestsom ger följande egenskaper:
Variable — en Python-variabel som data skrivs in i.
Type — variabeltyp: dataframe (pandas dataram) eller list.
Namespace — det område från vilket vi tar emot uppgifter. Plastpåse isc.py bör finnas på detta område. Detta kan vara ett område utan produktsupport.
Baserat på detta gränssnitt implementeras fyra klasser av förfrågningar:
isc.py.msg.QueryRequest - ställ in egenskapen Query för att skicka en SQL-fråga.
isc.py.msg.ClassRequest - ställ in egenskapen Class att skicka klassdata.
isc.py.msg.TableRequest - ange egendom Table för att överföra tabelldata.
isc.py.msg.GlobalRequest - ange egendom Global för global dataöverföring.
Titta på aktiviteten i testprocessen RAWvar isc.py.msg.QueryRequest visas i aktion.
Spara/återställa Python-kontext
Slutligen kan vi spara Python-kontexten i InterSystems IRIS, för att göra detta skickar vi isc.py.msg.SaveRequest med argument:
Mask — Endast variabler som matchar masken sparas. Stöds * и ?. Exempel: "Data*, Figure?". Standard *.
MaxLength — Den maximala längden på den lagrade variabeln. Om serialiseringen av en variabel är längre kommer den att ignoreras. Sätt till 0 för att få variabler av valfri längd. Standard $$$MaxStringLength.
Name — Kontextnamn (valfritt).
Description — Beskrivning av sammanhanget (valfritt).
Returnerar Ens.StringResponse с Id sparat sammanhang. Titta på aktiviteten i testprocessen Save Context.
Relaterad begäran isc.py.msg.RestoreRequest laddar kontext från InterSystems IRIS till Python:
ContextId — Kontextidentifierare.
Clear — rensa sammanhanget innan du återställer.
Jupyter Notebook
Jupyter Notebook är ett webbprogram med öppen källkod som låter dig skapa och publicera anteckningsböcker som innehåller kod, visualiseringar och text. Python Gateway låter dig se och redigera BPL-processer i form av en Jupyter Notebook. Observera att den normala Python 3-exekutorn för närvarande används.
Det här tillägget förutsätter att kommentarer innehåller Python-kod och använder aktivitetsnamn som föregående titlar. Det är nu möjligt att utveckla PythonGateways affärsprocesser i Jupyter Notebook. Här är vad som är möjligt:
MLToolkit är en uppsättning verktyg vars mål är att kombinera modeller och en transaktionsmiljö så att de byggda modellerna enkelt kan användas direkt i dina affärsprocesser. Python Gateway är en del av MLToolkit och tillhandahåller integration med Python-språket, vilket gör att du kan orkestrera alla maskininlärningsalgoritmer skapade i Python (huvudmiljön för många dataforskare), använda många färdiga bibliotek för att snabbt skapa adaptiv, robotisk analytisk AI / ML-lösningar på InterSystems plattform IRIS.
MLToolkit-användargruppen är ett privat GitHub-förråd skapat som en del av InterSystems företags GitHub-organisation. Den är avsedd för externa användare som installerar, lär sig eller redan använder MLToolkit-komponenter, inklusive Python Gateway. Gruppen har ett antal implementerade fall (med källkod och testdata) inom områdena marknadsföring, tillverkning, medicin och många andra industrier. För att gå med i ML Toolkit User Group, skicka ett kort e-postmeddelande till följande adress: [e-postskyddad] och inkludera följande information i ditt brev:
GitHub användarnamn
Organisation (du arbetar eller studerar)
Position (din faktiska position i din organisation, antingen "Student" eller "Oberoende").
land
För dem som har läst artikeln och är intresserade av funktionerna hos InterSystems IRIS som en plattform för att utveckla eller vara värd för artificiell intelligens och maskininlärningsmotorer, inbjuder vi dig att diskutera möjliga scenarier som är av intresse för ditt företag. Vi analyserar gärna ditt företags behov och fastställer gemensamt en handlingsplan; Kontakt e-postadress till vårt AI/ML-expertteam – [e-postskyddad].