Den hĂ€r artikeln handlar om Python Gateway â ett community-projekt med öppen kĂ€llkod för InterSystems IRIS dataplattform. Detta projekt möjliggör orkestrering av alla maskininlĂ€rningsalgoritmer som skapats i Python (den primĂ€ra miljön för mĂ„nga datavetare), och att anvĂ€nda ett flertal fĂ€rdiga bibliotek för att snabbt skapa anpassningsbara, robotiserade analytiska AI/ML-lösningar pĂ„ InterSystems IRIS-plattformen. I den hĂ€r artikeln kommer jag att visa hur InterSystems IRIS kan orkestrera processer pĂ„ Python, effektivt genomföra tvĂ„vĂ€gsdataöverföring och skapa intelligenta affĂ€rsprocesser.
Plan
- Introduktion.
- Verktyg.
- Installation.
- API.
- Interoperabilitet.
- Jupyter Notebook.
- Slutsatser.
- LĂ€nkar.
- MLToolkit.
Introduktion
Python Àr ett hög-nivÄ programmeringssprÄk för allmÀnna ÀndamÄl som fokuserar pÄ att öka utvecklarens produktivitet och kodens lÀsbarhet. I denna artikelserie kommer jag att diskutera möjligheterna att anvÀnda Python pÄ InterSystems IRIS-plattformen, dÀr huvudfokus för denna artikel Àr att anvÀnda Python för att skapa och tillÀmpa maskininlÀrningsmodeller.
MaskininlÀrning (ML) Àr en klass av metoder inom artificiell intelligens, vars kÀnnetecken Àr att de inte löser problem direkt utan lÀr sig genom att lösa ett antal liknande problem.
Algoritmer och modeller för maskininlĂ€rning blir alltmer vanliga. Anledningarna till detta Ă€r mĂ„nga, men allt handlar om tillgĂ€nglighet, enkelhet och att uppnĂ„ praktiska resultat. Ăr klustring eller till och med neuronĂ€r nĂ€tverksmodellering en ny teknologi?
SjÀlvklart inte, men idag Àr det inte nödvÀndigt att skriva hundratusentals rader kod för att köra en modell, och kostnaderna för att skapa och tillÀmpa modeller blir allt lÀgre.
Verktygen utvecklas â Ă€ven om vi inte har helt GUI-orienterade AI/ML-verktyg, sĂ„ ser vi samma framsteg som vi har sett inom mĂ„nga andra klasser av informationssystem, till exempel BI (frĂ„n kodskrivning till anvĂ€ndning av ramverk och GUI-orienterade konfigurerbara lösningar), Ă€ven i verktyg för att skapa AI/ML. Vi har redan passerat fasen av att skriva kod och anvĂ€nder idag ramverk för att bygga och trĂ€na modeller.
Andra förbÀttringar, som möjligheten att sprida en förutbildad modell, dÀr slutanvÀndaren bara mÄste slutföra trÀningen av modellen med sina specifika data, underlÀttar ocksÄ början av tillÀmpningen av maskininlÀrning. Dessa framsteg gör det betydligt lÀttare att lÀra sig maskininlÀrning, bÄde för specialister och för företag som helhet.
Ă andra sidan samlar vi in ââallt mer data. Tack vare en enhetlig dataplattform, sĂ„som InterSystems IRIS, kan all denna information omedelbart förberedas och anvĂ€ndas som grunddata för maskininlĂ€rningsmodeller.
Med övergÄngen till molnet blir lanseringen av AI/ML-projekt lÀttare Àn nÄgonsin. Vi kan anvÀnda endast de resurser som vi behöver. Dessutom, tack vare parallelliseringen som erbjuds av molnplattformar, kan vi spara tid.
Men hur Àr det med resultaten? HÀr blir allt mer komplicerat. Det finns mÄnga verktyg för att bygga modeller, vilket jag kommer att gÄ in pÄ senare. Att bygga en bra modell Àr inte enkelt, men vad hÀnder sen? Att fÄ företagets verksamhet att dra nytta av modellen Àr ocksÄ en utmanande uppgift. KÀrnan i problemet ligger i att separera analytiska och transaktionella belastningar, samt datamodeller. NÀr vi trÀnar en modell gör vi det vanligtvis pÄ historiska data. Men platsen för den byggda modellen Àr i den transaktionella databehandlingen. Vad Àr poÀngen med den bÀsta modellen för att upptÀcka bedrÀgliga transaktioner, om vi bara kör den en gÄng om dagen? Bedragarna har redan försvunnit med pengarna. Vi behöver trÀna modellen pÄ historiska data, men vi mÄste ocksÄ tillÀmpa den i realtid pÄ de nya inkommande data sÄ att vÄra affÀrsprocesser kan agera i enlighet med de förutsÀgelser som modellen gör.
ML Toolkit Àr en uppsÀttning verktyg vars syfte Àr just detta: att förena modeller och transaktionsmiljöer sÄ att byggda modeller enkelt kan anvÀndas direkt i dina affÀrsprocesser. Python Gateway Àr en del av ML Toolkit och möjliggör integration med Python-sprÄket (pÄ samma sÀtt som R Gateway, som Àr en del av ML Toolkit, möjliggör integration med R-sprÄket).
VerktygslÄda
Innan vi fortsÀtter, skulle jag vilja beskriva nÄgra verktyg och bibliotek för Python som vi kommer att anvÀnda senare.
Teknologier
- Python Àr ett tolkat, hög-nivÄ programmeringssprÄk för allmÀn anvÀndning. Den frÀmsta fördelen med sprÄket Àr det stora biblioteket av matematiska, ML- och AI-bibliotek. Precis som ObjectScript Àr det ett objektorienterat sprÄk, men allt definieras dynamiskt snarare Àn statiskt. Dessutom Àr allt ett objekt. Senare artiklar förutsÀtter ett flyktigt bekantskap med sprÄket. Om du vill börja lÀra dig rekommenderar jag att du börjar med .
- För vÄra kommande övningar, installera .
- IDE: Jag anvÀnder , men det finns ocksÄ . Om du anvÀnder Atelier finns det en Eclipse-plugin för Python-utvecklare. Om du anvÀnder VS Code, finns det en extension för Python.
- Notebook: istÀllet för en IDE kan du skriva och dela dina skript i online-notebooks. Den mest populÀra Àr .
Bibliotek
HÀr Àr en (ofullstÀndig) lista över bibliotek för maskininlÀrning:
- â det grundlĂ€ggande paketet för exakta berĂ€kningar.
- â högpresterande datatyper och verktyg för dataanalys.
- â skapande av grafer.
- â datavisualisering baserat pĂ„ matplotlib.
- â maskininlĂ€rningsmetoder.
- â maskininlĂ€rningsalgoritmer inom ramen för metodologin för gradientboosting.
- â NLP.
- â neurala nĂ€tverk.
- â en plattform för att bygga maskininlĂ€rningsmodeller.
- â en plattform för att bygga maskininlĂ€rningsmodeller med fokus pĂ„ Python.
- â PMML frĂ„n olika modeller.
AI/ML-teknologier möjliggör att företag blir mer effektiva och anpassningsbara. Dessutom blir dessa teknologier idag enklare att utveckla och implementera. Börja studera AI/ML-teknologier och hur de kan hjÀlpa din organisation att vÀxa.
Installation
Det finns flera sÀtt att installera och anvÀnda Python Gateway:
- OS
- Windows
- Linux
- Mac
- Docker
- AnvÀnd en bild frÄn DockerHub
- Skapa din egen bild
Oavsett installationsmetod kommer du att behöva kÀllkoden. Den enda platsen för att ladda ner koden Àr . Den innehÄller testade stabila utgÄvor, ta bara den senaste. Just nu Àr det 0.8, men fler kommer med tiden. Klona inte/ladda inte ner repository, ladda ner bara den senaste utgÄvan.
OS
NÀr du installerar Python Gateway pÄ ett operativsystem mÄste du först (oavsett operativsystem) installera Python. För att göra detta:
- . Det rekommenderas att installera Python i standardkatalogen.
- Installera modulen
dill:pip install dill. - Ladda ner ObjectScript-koden (dvs.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) till valfritt namnutrymme med produkter. Om du vill att ett befintligt namnutrymme ska stödja produkter, kör:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Placera till mappen
bindin instans av InterSystems IRIS. Biblioteksfilen mÄste vara tillgÀnglig pÄ en vÀg som Äterges avwrite ##class(isc.py.Callout).GetLib().
Windows
- Se till att miljövariabeln
PYTHONHOMEpekar pÄ Python 3.6.7. - Kontrollera att systemets miljövariabler
PATHinnehÄller variabelnPYTHONHOME(eller katalogen som den pekar pÄ).
Linux (Debian/Ubuntu)
- Kontrollera att miljövariabeln
PATHinnehÄller/usr/liboch/usr/lib/x86_64-linux-gnu. AnvÀnd filen/etc/environmentför att stÀlla in miljövariabler. - Vid fel
undefined symbol: _Py_TrueStructstÀll in instÀllningenPythonLib. Det finns ocksÄ en som har en avsnitt om felsökning.
Mac
- För nÀrvarande stöds bara Python 3.6.7 frÄn . Kontrollera variabeln
PATH.
Om du har Àndrat miljövariabler, starta om din InterSystems-produkt.
Docker
AnvÀndning av containrar har flera fördelar:
- Portabilitet
- Effektivitet
- Isolering
- LĂ€ttviktighet
- Immutabilitet
LÀs denna för mer information om att anvÀnda Docker med InterSystems-produkter.
Alla versioner av Python Gateway Àr för nÀrvarande baserade pÄ containrar. 2019.4.
FĂ€rdig bild
Kör: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, för att ladda ner och köra Python Gateway med InterSystems IRIS Community Edition. Det Àr allt.
Skapa din egen bild
För att bygga dockerbilden kör du i rotkatalogen för repositoriet: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Standardbilden byggs baserat pÄ bilden store/intersystems/iris-community:2019.4.0.383.0, men du kan Àndra detta genom att stÀlla in variabeln 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`.
Efter detta kan du köra dockerbilden:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyOm du anvÀnder en bild baserad pÄ InterSystems IRIS Community Edition, behöver du inte ange nyckeln.
Kommentarer
- Testprocessen
isc.py.test.Processsparar en rad bilder i en temporÀr katalog. Du kan vilja Àndra denna sökvÀg till en monterad katalog. För att göra detta, redigera instÀllningenWorkingDirgenom att ange den monterade katalogen. - För att fÄ tillgÄng till terminalen, kör:
docker exec -it irispy sh. - Ă
tkomst till System Management Portal med inloggning
SuperUser/SYS. - För att stoppa containern, kör:
docker stop irispy && docker rm --force irispy.
Verifiera installationen
Efter att du har installerat Python Gateway, bör du kontrollera att den fungerar. Kör denna kod i terminalen för InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varDet bör resultera i HELLO â vĂ€rdet pĂ„ Python-variabeln x. Om den returnerade statusen sc Ă€r ett fel eller var tom, kontrollera .
API
Python Gateway Àr installerad och du har verifierat att den fungerar. Dags att börja anvÀnda den!
HuvudgrÀnssnittet för Python Àr isc.py.Main. Det erbjuder följande grupper av metoder (alla returnerar %Status):
- Körning av kod
- Datatransmission
- HjÀlpmetoder
Körning av kod
Dessa metoder möjliggör körning av godtycklig Python-kod.
SimpleString
SimpleString â Ă€r den primĂ€ra metoden. Den tar 4 valfria argument:
codeâ kodstrĂ€ng att köra. Radbrytning:$c(10).returnVariableâ namnet pĂ„ variabeln som ska returneras.serializationâ hur du ska serielliserareturnVariable. 0 â string (standard), 1 â repr.resultâ ByRef-referens till variabeln dĂ€r vĂ€rdet skrivs.returnVariable.
Ovanför har vi kört:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).I detta exempel tilldelar vi en Python-variabel x vÀrdet Hej och vill returnera vÀrdet pÄ Python-variabeln x till en ObjectScript-variabel var.
ExecuteCode
ExecuteCode Àr ett mer sÀkert och mindre begrÀnsat alternativ SimpleString.
StrÀngar pÄ InterSystems IRIS-plattformen Àr begrÀnsade till 3 641 144 tecken, och om du vill köra en lÀngre kodsnutt, mÄste du anvÀnda flöden.
Tar tvÄ argument:
codeâ strĂ€ng eller flöde av Python-kod att köra.variableâ (valfritt) tilldelar resultatet av körningencodedenna Python-variabel.
Exempel att anvÀnda:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").I detta exempel multiplicerar vi 2 med 3 och lagrar resultatet i en Python-variabel y.
Datatransmission
Skicka data till Python och tillbaka.
Python -> InterSystems IRIS
Det finns 4 sÀtt att fÄ vÀrdet pÄ en Python-variabel i InterSystems IRIS, beroende pÄ vilken serialisering du behöver:
StrÀngför enkla datatyper och felsökning.Reprför att lagra enkla objekt och för felsökning.JSONför att enkelt manipulera data pÄ InterSystems IRIS-sidan.Pickleför att spara objekt.
Dessa metoder gör det möjligt att hÀmta variabler frÄn Python som strÀngar eller flöden.
GetVariable(variable, serialization, .stream, useString)â hĂ€mtaserializationvariabelnvariablepĂ„stream. OmuseStringĂ€r 1 och serialisering placeras i en strĂ€ng, sĂ„ returneras en strĂ€ng istĂ€llet för ett flöde.GetVariableJson(variable, .stream, useString)â hĂ€mta JSON-serialisering av variabeln.GetVariablePickle(variable, .stream, useString, useDill)â hĂ€mta Pickle (eller Dill) serialisering av variabeln.
Vi ska försöka hÀmta vÄr variabel y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Vi laddar data frÄn InterSystems IRIS till Python.
ExecuteQuery(query, variable, type, namespace)â skapar en dataset (pandasdataframeellerlist) frĂ„n SQL-förfrĂ„gan och sĂ€tter den i Python-variabelnvariable. Paketetisc.pymĂ„ste vara tillgĂ€ngligt i omrĂ„detnamnrymdâ dĂ€r frĂ„gan kommer att utföras.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)â laddar data frĂ„n globalenglobalfrĂ„n subscriptetstarttillendtill Python som en variabel av typentyp:list, eller pandasdataframe. Beskrivning av valfria argumentmaskochlabelsfinns i dokumentationen för klassen och i förvaret .ExecuteClass(class, variable, type, start, end, properties, namespace)â laddar klassdataklassfrĂ„n idstarttillendtill Python som en variabel av typentyp:list, eller pandasdataframe.propertiesâ lista (separator â kommatecken) av klassens egenskaper som ska laddas in i datasetet. Masker stöds*och?. Som standard â*(alla egenskaper). Egenskapen%%CLASSNAMEĂ€r instĂ€lld.ExecuteTable(table, variable, type, start, end, properties, namespace)â laddar tabelldatatabellfrĂ„n idstarttillendin i Python.
ExecuteQuery â Ă€r universell (vilken som helst korrekt SQL-förfrĂ„gan kommer att skickas till Python). Men, ExecuteGlobal och dess omslag ExecuteClass och ExecuteTable har vissa begrĂ€nsningar. De Ă€r mycket snabbare (3-5 gĂ„nger snabbare Ă€n ODBC-drivrutinen och 20 gĂ„nger snabbare ExecuteQuery). Ytterligare information finns i .
Alla dessa metoder stöder datatransfer frÄn vilket omrÄde som helst. Paketet isc.py mÄste vara tillgÀngligt i mÄlomrÄdet.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) â överför resultat av vilken korrekt SQL-förfrĂ„gan till Python. Detta Ă€r den lĂ„ngsammaste metoden för datatransfer. AnvĂ€nd den om ExecuteGlobal och dess omslag inte Ă€r tillgĂ€ngliga.
Argument:
queryâ SQL-förfrĂ„gan.variableâ namnet pĂ„ Python-variabeln dĂ€r data sparas.typâlisteller Pandasdataframe.namnrymdâ omrĂ„det dĂ€r frĂ„gan kommer att utföras.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) â överför globalen till Python.
Argument:
globalâ namnet pĂ„ globalen utan^variableâ namnet pĂ„ Python-variabeln dĂ€r data sparas.typâlisteller Pandasdataframe.startâ första subscriptet av globalen. Obligatoriskt%Integer.endâ sista subscriptet av globalen. Obligatoriskt%Integer.maskâ mask av globala vĂ€rden. Masken kan vara kortare Ă€n antalet fĂ€lt i globalen (i sĂ„ fall kommer fĂ€lten i slutet att ignoreras). SĂ„ hĂ€r formaterar du masken:+skicka vĂ€rdet som det Ă€r.-hoppa över vĂ€rdet.bâ Logisk typ (0âFalskt, allt annat âSant).dâ Datum (frĂ„n $horolog, pĂ„ Windows frĂ„n 1970, pĂ„ Linux frĂ„n 1900).tâ Tid ($horolog, sekunder efter midnatt).mâ TidsstĂ€mpel (strĂ€ng i formatet Ă R-MĂ NAD-DAG TIMME:MINUT:SEKUND).
labelsâ %List över kolumnnamn. Första elementet â namnet pĂ„ subscriptet.namnrymdâ omrĂ„det dĂ€r frĂ„gan kommer att utföras.
ExecuteClass
Inpackning över ExecuteGlobal. Baserat pÄ klassdefinitionen förbereder den ett anrop ExecuteGlobal och anropar det.
ExecuteClass(class, variable, type, start, end, properties, namespace) â överföring av klassdata i Python.
Argument:
klassâ klassnamnvariableâ namnet pĂ„ Python-variabeln dĂ€r data sparas.typâlisteller Pandasdataframe.startâ start Id.endâ slut Idpropertiesâ lista (separator â kommatecken) av klassens egenskaper som ska laddas in i datasetet. Masker stöds*och?. Som standard â*(alla egenskaper). Egenskapen%%CLASSNAMEĂ€r instĂ€lld.namnrymdâ omrĂ„det dĂ€r frĂ„gan kommer att utföras.
Alla egenskaper överförs som de Ă€r utom typ-egenskaperna te, %Time, %Boolean och %TimeStamp â de konverteras till motsvarande Python-klasser.
ExecuteTable
Inpackning över ExecuteClass. ĂversĂ€tter tabellnamnet till klassnamn och anropar ExecuteClass. Signatur:
ExecuteTable(table, variable, type, start, end, properties, namespace) â överföring av tabelldata till Python.
Argument:
tabellâ tabellnamn.
Alla andra argument överförs som de Àr tillExecuteClass.
Anteckningar
ExecuteGlobal,ExecuteClassochExecuteTablearbetar lika snabbt.ExecuteGlobal20 gĂ„nger snabbare Ă€nExecuteQuerypĂ„ stora datamĂ€ngder (överföringstid mer Ă€n >0.01 sekunder).ExecuteGlobal,ExecuteClassochExecuteTablefungerar pĂ„ globaler med denna struktur:^global(key) = $lb(prop1, prop2, ..., propN)wkeyâ heltal.- För
ExecuteGlobal,ExecuteClassochExecuteTablestödd vÀrdeomrÄdetemotsvarar intervalletmktimeoch beror pÄ operativsystemet (: 1970-01-01, 1900-01-01, ). AnvÀnd%TimeStampför att överföra data utanför detta intervall eller anvÀnd pandas dataframe eftersom detta begrÀnsning endast gÀller listan. - För
ExecuteGlobal,ExecuteClassochExecuteTablealla argument utom datakÀllan (global, klass eller tabell) och variabeln Àr valfria.
Exempel
Testklass innehÄller en metod som visar alla alternativ för datöverföring:
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"
// AllmÀnna argument
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Metod 0: ExecuteGlobal utan argument
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Metod 1: ExecuteGlobal med argument
// Vid överföring av globalen anges fÀltnamn för hand
// globalKey - namnet pÄ subskriptet
set labels = $lb("globalKey", "Namn", "Födelsedatum", "TS", "Slumptid", "Ă
r", "Decimaltal", "Dubbel", "Bool")
// mask innehÄller ett element mindre Àn labels eftersom "globalKey" Àr namnet pÄ subskripten
// Vi hoppar över %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Metod 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Metod 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Metod 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)Anropa metoden do ##class(isc.py.test.Person).Test() för att se hur alla metoder för datatransfer fungerar.
HjÀlpmetoder
GetVariableInfo(variable, serialization, .defined, .type, .length)â hĂ€mta information om variabeln: om den Ă€r definierad, klass och lĂ€ngd av serialiseringen.GetVariableDefined(variable, .defined)â Ă€r variabeln definierad.GetVariableType(variable, .type)â hĂ€mta klass för variabeln.GetStatus()â hĂ€mta och ta bort det senaste undantaget pĂ„ Python-sidan.GetModuleInfo(module, .imported, .alias)â hĂ€mta modulens variabel och importstatus.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)â hĂ€mta information om funktionen.
Interoperabilitet
Du har lĂ€rt dig att anropa Python Gateway frĂ„n terminalen, nu börjar vi anvĂ€nda den i produktion. Grunden för interaktionen med Python i detta lĂ€ge â isc.py.ens.Operation. Den gör det möjligt för oss att:
- Köra Python-kod
- Spara/ÄterstÀlla Python-kontext
- Ladda och hÀmta data frÄn Python
I princip Àr Python-operation en inslagning av isc.py.Main. Operationen isc.py.ens.Operation ger möjlighet att interagera med Python-processen frÄn InterSystems IRIS-produkterna. Fem typer av förfrÄgningar stöds:
isc.py.msg.ExecutionRequestför att köra Python-kod. Returnerarisc.py.msg.ExecutionResponsemed resultatet av körningen och vÀrden för begÀrda variabler.isc.py.msg.StreamExecutionRequestför att köra Python-kod. Returnerarisc.py.msg.StreamExecutionResponseresultatet av körningen och vÀrden för begÀrda variabler. Motsvarandeisc.py.msg.ExecutionRequest, men tar emot och returnerar strömmar istÀllet för strÀngar.isc.py.msg.QueryRequestför att överföra resultatet av SQL-frÄgan. ReturnerarEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestför datatransfer av global/kategori/tabell. ReturnerarEns.Response.isc.py.msg.SaveRequestför att spara Python-kontext. ReturnerarEns.StringResponsemed kontextidentifierare.isc.py.msg.RestoreRequestför att ÄterstÀlla Python-kontext.Dessutom,
isc.py.ens.Operationhar tvĂ„ instĂ€llningar:Initializerâ val av klass som implementerar grĂ€nssnittetisc.py.init.Abstract. Den kan anvĂ€ndas för att ladda funktioner, moduler, klasser etc. Den körs en gĂ„ng vid processens start.PythonLibâ (endast för Linux) om du ser fel vid laddning, stĂ€ll in dess vĂ€rde tilllibpython3.6m.soeller till och med till den fullstĂ€ndiga sökvĂ€gen till Python-biblioteket.
Skapande av affÀrsprocesser
Det finns tvÄ klasser som underlÀttar utvecklingen av affÀrsprocesser:
isc.py.ens.ProcessUtilsmöjliggör att extrahera annoteringar frÄn aktiviteter med variabelinsÀttning.isc.py.util.BPEmulatorgjör att enkelt testa affÀrsprocesser med Python. Den kan utföra affÀrsprocesser (delar pÄ Python-sprÄk) i den aktuella processen.
VariabelersÀttning
Alla affÀrsprocesser som Àrver frÄn isc.py.ens.ProcessUtils, kan anvÀnda metoden GetAnnotation(name) för att hÀmta vÀrdet av aktivitetens annotering baserat pÄ dess namn. Aktivitetens annotering kan innehÄlla variabler som kommer berÀknas pÄ sidan av InterSystems IRIS innan de skickas till Python. HÀr Àr syntaxen för variabelinsÀttning:
${class:method:arg1:...:argN}â anrop till metoden#{expr}â exekvera kod i ObjectScript.
Ett exempel finns i den testade affÀrsprocessen isc.py.test.Process, t.ex. i aktiviteten Korrelationsmatris: Graf: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). I detta exempel:
#{process.WorkDirectory}returnerar egenskapen WorkDirectory frÄn objektetprocess, som Àr en instans av klassenisc.py.test.Processdvs. den aktuella affÀrsprocessen.${%PopulateUtils:Integer:1:100}anropar metodenHeltalklassen%PopulateUtils, genom att skicka argument1och100, som returnerar ett slumpmÀssigt heltal inom spannet1...100.
TestaffÀrsprocess
Testprodukt och testaffÀrsprocess Àr som standard tillgÀngliga som en del av Python Gateway. För att anvÀnda dem:
- Kör följande i OS-terminalen:
pip install pandas matplotlib seaborn. - Kör följande i InterSystems IRIS-terminalen:
do ##class(isc.py.test.CannibalizationData).Import()för att fylla i testdata. - Kör produkten
isc.py.test.Production. - Skicka en begÀran av typen
Ens.RequestpÄisc.py.test.Process.
LĂ„t oss se hur allt fungerar tillsammans. Ăppna isc.py.test.Process i BPL-redigeraren:

Körning av kod
Det viktigaste anropet Àr att exekvera Python-kod:

AnvÀnds begÀran isc.py.msg.ExecutionRequest, hÀr Àr dess egenskaper:
Codeâ Python-kod.SeparateLinesâ ska koden delas upp i rader för exekvering.$c(10)(n) anvĂ€nds för att separera rader. Observera att det INTE rekommenderas att bearbeta meddelandet helt pĂ„ en gĂ„ng, denna funktion Ă€r avsedd endast för behandlingdefoch liknande fler-rads uttryck. Som standard0.Variablerâ en kommaseparerad lista av variabler som kommer att lĂ€ggas till svaret.Serialiseringâ Hur man serialiserar variabler som vi vill returnera. Alternativ:Str,Repr,JSON,PickleochDill, som standardStr.
I vÄrt fall stÀller vi bara in egenskapen Code, sÄ alla andra egenskaper anvÀnder standardvÀrden. Vi stÀller in den genom att anropa process.GetAnnotation("Import pandas"), vilket under körning returnerar annotationen efter att ha utfört variabelsubstitution. I slutÀndan kommer koden import pandas as pd att överföras till Python. GetAnnotation kan vara anvÀndbart för att fÄ fler-rads Python-skript, men det finns inga begrÀnsningar för detta sÀtt att hÀmta kod. Du kan stÀlla in egenskapen Code pÄ ett sÀtt som passar dig.
HĂ€mtning av variabler
Ănnu en intressant utmaning med anvĂ€ndning av isc.py.msg.ExecutionRequest â Korrelationsmatris: Tabellarisk:

Den berÀknar Korrelationsmatrisen pÄ Python-sidan och hÀmtar variabeln corrmat tillbaka till InterSystems IRIS i JSON-format, genom att stÀlla in frÄgeegenskaperna:
Variabler:"corrmat"Serialisering:"JSON"
Vi kan se resultaten i Visual Trace:

Och om vi behöver det hÀr vÀrdet i BP kan det hÀmtas sÄ hÀr: callresponse.Variables.GetAt("corrmat").
Datatransmission
Nu ska vi prata om att överföra data frÄn InterSystems IRIS till Python, alla datatransferfrÄgor implementerar grÀnssnittet isc.py.msg.DataRequest, som tillhandahÄller följande egenskaper:
Variabelâ Python-variabeln i vilken data skrivs.Typeâ datatypes:dataframe(pandas dataframe) ellerlist.Namespaceâ omrĂ„det frĂ„n vilket vi hĂ€mtar data. Paketetisc.pymĂ„ste vara tillgĂ€ngligt i detta omrĂ„de. Det kan vara ett omrĂ„de utan produktstöd.
Baserat pÄ detta grÀnssnitt har 4 klasser av frÄgor implementerats:
isc.py.msg.QueryRequestâ stĂ€ll in egenskapenQueryför att överföra SQL-frĂ„gan.isc.py.msg.ClassRequestâ stĂ€ll in egenskapenKlassför att överföra klassdata.isc.py.msg.TableRequestâ stĂ€ll in egenskapenTabellför att överföra tabelldata.isc.py.msg.GlobalRequestâ stĂ€ll in egenskapenGlobalför att överföra globala data.
Under testprocessen, titta pÄ aktiviteten RAW, dÀr isc.py.msg.QueryRequest visad i aktion.

Spara/à terstÀll 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 uppfyller masken sparas. Stöder*och?. Exempel:"Data*, Figure?". Som standard*.MaxLengthâ Maximal lĂ€ngd för den lagrade variabeln. Om serialiseringen av variabeln Ă€r lĂ€ngre, kommer den att ignoreras. StĂ€ll in 0 för att tillĂ„ta variabler av valfri lĂ€ngd. StandardinstĂ€llning:$$$MaxStringLength.Namnâ Kontextnamn (valfritt).Beskrivningâ Kontextbeskrivning (valfritt).
Returnerar Ens.StringResponse med Id av den sparade kontexten. Under testprocessen, titta pÄ aktiviteten Spara kontext.
Relaterad begÀran isc.py.msg.RestoreRequest laddar kontext frÄn InterSystems IRIS i Python:
ContextIdâ kontextidentifierare.Rensaâ rensa kontexten innan Ă„terstĂ€llning.
Jupyter Notebook
â detta Ă€r en öppen kĂ€llkodswebbapplikation som gör det möjligt att skapa notebookar som innehĂ„ller kod, visualiseringar och text och publicera dem. Python Gateway gör det möjligt att visa och redigera BPL-processer i form av Jupyter Notebook. Observera att en vanlig Python 3-executor för nĂ€rvarande anvĂ€nds.
Detta tillÀgg förutsÀtter att kommentarerna innehÄller Python-kod och anvÀnder aktiviteters namn som föregÄende rubriker. Nu Àr det möjligt att utveckla PythonGateway affÀrsprocesser i Jupyter Notebook. HÀr Àr vad som Àr möjligt:
- Skapa nya affÀrsprocesser
- Ta bort affÀrsprocesser
- Skapa nya aktiviteter
- Ăndra aktiviteter
- Ta bort aktiviteter
HÀr Àr . Och nÄgra skÀrmdumpar:
Processutforskare

Processredigerare

Installation
- Du behöver InterSystems IRIS 2019.2+.
- Installera PythonGateway v0.8+ (krÀvs endast
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsochisc.py.ens.ProcessUtils). - Uppdatera ObjectScript-koden frÄn lagret.
- Kör
do ##class(isc.py.util.Jupyter).Install()och följ anvisningarna.
.
Slutsatser
MLToolkit Àr en uppsÀttning verktyg vars syfte Àr att förena modeller och transaktionella miljöer 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 möjliggör orkestrering av vilken maskininlÀrningsalgoritm som helst, skapad pÄ Python (huvudmiljön för mÄnga datavetare), med hjÀlp av mÄnga fÀrdiga bibliotek för snabb utveckling av adaptiva, automatiserade analytiska AI/ML-lösningar pÄ InterSystems IRIS-plattformen.
LĂ€nkar
MLToolkit
MLToolkit-anvÀndargruppen Àr ett privat GitHub-repo, skapat som en del av företags-GitHub-organisationen InterSystems. Den Àr avsedd för externa anvÀndare som installerar, utforskar eller redan anvÀnder komponenter frÄn MLToolkit, inklusive Python Gateway. Gruppen erbjuder en mÀngd implementerade fallstudier (med kÀllkod och testdata) inom omrÄden som marknadsföring, produktion, medicin och mÄnga andra industrier. För att gÄ med i ML Toolkit-anvÀndargruppen, vÀnligen skicka ett kort meddelande via e-post till följande adress: och ange följande uppgifter i ditt meddelande:
- GitHub-anvÀndarnamn
- Organisation (dÀr du arbetar eller studerar)
- Befattning (din faktiska titel inom din organisation, eller "Student", eller "Frilans").
- Land
Till dem som har lÀst artikeln och Àr intresserade av möjligheterna med InterSystems IRIS som en plattform för utveckling eller hosting av AI- och maskininlÀrningslösningar erbjuder vi att diskutera möjliga scenarier av intresse för ert företag. Vi ser fram emot att analysera ert företags behov och tillsammans definiera en handlingsplan; kontaktadressen till vÄr AI/ML-expertgrupp Àr .
KĂ€lla: habr.com
