تركز هذه المقالة على بوابة Python ، وهي مشروع مجتمع مفتوح المصدر لمنصة بيانات InterSystems IRIS. يتيح لك هذا المشروع تنظيم أي خوارزميات التعلم الآلي التي تم إنشاؤها في Python (البيئة الرئيسية للعديد من علماء البيانات) ، واستخدام العديد من المكتبات الجاهزة لإنشاء حلول AI / ML التحليلية الروبوتية التكيفية بسرعة استنادًا إلى منصة InterSystems IRIS. في هذه المقالة ، سأوضح كيف يمكن لـ InterSystems IRIS تنسيق العمليات في Python ، وتنفيذ نقل البيانات ثنائي الاتجاه بكفاءة ، وإنشاء عمليات تجارية ذكية.
خطة
- المقدمة
- أدوات.
- التركيب
- API
- التوافقية
- جوبيتر نوت بوك.
- الموجودات.
- المراجع
- MLToolkit.
المقدمة
Python — , . Python InterSystems IRIS, Python .
(ML) — , , .
. , , . ?
, , , .
— GUI- AI/ML-, , , , BI ( GUI- ), AI/ML. .
, , , . , .
, . , InterSystems IRIS, .
AI/ML- , -. , . , , , .
? . , . , ? . , . , . — . , ? . , , - , .
ML Toolkit — , : , -. Python Gateway ML Toolkit Python ( R Gateway, ML Toolkit R).
, Python, .
() :
AI/ML . , . AI/ML- , .
Python Gateway:
, . — . , . 0.8, . / , .
Python Gateway , ( ) Python. :
- Python 3.6.7 64 bit. Python .
dill: pip install dill.- ObjectScript (..
do $system.OBJ.ImportDir("C:\InterSystems\Repos\Python\isc\py\", "*.cls", "c",,1)) . , , , : write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - callout DLL/SO/DYLIB
bin InterSystems IRIS. , write ##class(isc.py.Callout).GetLib().
Windows
- ,
PYTHONHOME Python 3.6.7. - ,
PATH PYTHONHOME ( , ).
Linux (Debian/Ubuntu)
- ,
PATH /usr/lib /usr/lib/x86_64-linux-gnu. /etc/environment . undefined symbol: _Py_TrueStruct PythonLib. Readme Troubleshooting.
Mac
- 3.6.7 Python.org.
PATH.
, InterSystems.
Docker
:
Docker InterSystems.
Python Gateway 2019.4.
: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, Python Gateway InterSystems IRIS Community Edition. .
- : docker build --force-rm --tag intersystemscommunity/irispy:latest ..
store/intersystems/iris-community:2019.4.0.383.0, , IMAGE.
InterSystems IRIS : `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ``.
-:
docker run -d \
-p 52773:52773 \
-v /<HOST-DIR-WITH-iris.key>/:/mount \
--name irispy \
intersystemscommunity/irispy:latest \
--key /mount/iris.key
, InterSystems IRIS Community Edition, .
isc.py.test.Process . , . WorkingDir .- :
docker exec -it irispy sh. SuperUser/SYS.- , :
docker stop irispy && docker rm --force irispy.
, Python Gateway, , . InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write var
HELLO — Python- x. sc var , Readme — Troubleshooting section.
API
Python Gateway , , . !
Python isc.py.Main. ( %Status):
Python-.
SimpleString
SimpleString — . 4 :
code — . : $c(10).returnVariable — .serialization — returnVariable. 0 — string ( ), 1 — repr.result — ByRef , returnVariable.
:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
Python x Hello Python x ObjectScript var.
ExecuteCode
ExecuteCode SimpleString.
InterSystems IRIS 3 641 144 , , .
:
code — Python .variable — () code Python .
:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").
2 3 Python y.
Python .
Python -> InterSystems IRIS
4 Python InterSystems IRIS, , :
String .Repr .JSON InterSystems IRIS.Pickle .
Python .
GetVariable(variable, serialization, .stream, useString) — serialization variable stream. useString 1 , .GetVariableJson(variable, .stream, useString) — JSON .GetVariablePickle(variable, .stream, useString, useDill) - Pickle ( Dill) .
y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6
InterSystems IRIS -> Python
InterSystems IRIS Python.
ExecuteQuery(query, variable, type, namespace) — (pandas dataframe list) sql Python variable. isc.py namespace — .ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — global start end Python type: list, pandas dataframe. mask and labels Data Transfer docs.ExecuteClass(class, variable, type, start, end, properties, namespace) — class id start end Python type: list, pandas dataframe. properties — ( — ) , . * ?. — * ( ). %%CLASSNAME .ExecuteTable(table, variable, type, start, end, properties, namespace) — table id start end Python.
ExecuteQuery — ( SQL- Python). , ExecuteGlobal ExecuteClass ExecuteTable . ( 3-5 ODBC- 20 ExecuteQuery). Data Transfer docs.
. isc.py .
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — SQL- Python. . , ExecuteGlobal .
:
query — sql .variable — Python .type — list Pandas dataframe.namespace — .
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) — Python.
:
global — ^variable — Python .type — list Pandas dataframe.start — . %Integer.end — . %Integer.mask — . , ( ). :
+ .- .b — (0 — False, — True).d — ( $horolog, Windows 1970, Linux 1900).t — ($horolog, ).m — ( YEAR-MONTH-DAY HOUR:MINUTE:SECOND).
labels — %List . — .namespace — .
ExecuteClass
ExecuteGlobal. ExecuteGlobal .
ExecuteClass(class, variable, type, start, end, properties, namespace) — Python.
:
class —variable — Python .type — list Pandas dataframe.start — Id.end — Idproperties — ( — ) , . * ?. — * ( ). %%CLASSNAME .namespace — .
%Date, %Time, %Boolean %TimeStamp — Python.
ExecuteTable
ExecuteClass. ExecuteClass. :
ExecuteTable(table, variable, type, start, end, properties, namespace) — Python.
:
ExecuteGlobal, ExecuteClass ExecuteTable .ExecuteGlobal 20 ExecuteQuery ( >0.01 ).ExecuteGlobal, ExecuteClass ExecuteTable : ^global(key) = $lb(prop1, prop2, ..., propN) key — .ExecuteGlobal, ExecuteClass ExecuteTable %Date mktime (windows: 1970-01-01, linux 1900-01-01, mac). %TimeStamp pandas dataframe .. .ExecuteGlobal, ExecuteClass ExecuteTable (, ) .
isc.py.test.Person , :
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)
do ##class(isc.py.test.Person).Test() .
GetVariableInfo(variable, serialization, .defined, .type, .length) — : , .GetVariableDefined(variable, .defined) — .GetVariableType(variable, .type) — .GetStatus() — Python.GetModuleInfo(module, .imported, .alias) — .GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — .
Python Gateway , . Python — isc.py.ens.Operation. :
, Pyhton isc.py.Main. isc.py.ens.Operation Python InterSystems IRIS. :
-
, -:
isc.py.ens.ProcessUtils .isc.py.util.BPEmulator - Python. - ( Python) .
-, isc.py.ens.ProcessUtils, GetAnnotation(name) . , InterSystems IRIS Python. :
${class:method:arg1:...:argN} —#{expr} — ObjectScript.
- isc.py.test.Process, , Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). :
#{process.WorkDirectory} WorkDirectory process, isc.py.test.Process .. -.${%PopulateUtils:Integer:1:100} Integer %PopulateUtils, 1 100, 1...100.
-
- Python Gateway. :
- :
pip install pandas matplotlib seaborn. - InterSystems IRIS :
do ##class(isc.py.test.CannibalizationData).Import() . isc.py.test.Production.Ens.Request isc.py.test.Process.
, . isc.py.test.Process BPL:

— Python :

isc.py.msg.ExecutionRequest, :
Code — Python .SeparateLines — . $c(10) (\n) . , , def . 0.Variables — , .Serialization — , . : Str, Repr, JSON, Pickle Dill, Str.
, Code, . process.GetAnnotation("Import pandas"), . , import pandas as pd Python. GetAnnotation Python , . Code .
isc.py.msg.ExecutionRequest — Correlation Matrix: Tabular:

Python corrmat InterSystems IRIS JSON, :
Variables: "corrmat"Serialization: "JSON"
Visual Trace:

, : callresponse.Variables.GetAt("corrmat").
InterSystems IRIS Python, isc.py.msg.DataRequest, :
Variable — Python .Type — : dataframe (pandas dataframe) list.Namespace — . isc.py . .
4 :
isc.py.msg.QueryRequest — Query SQL .isc.py.msg.ClassRequest — Class .isc.py.msg.TableRequest — Table .isc.py.msg.GlobalRequest — Global .
RAW, isc.py.msg.QueryRequest .

/ Python
, Python InterSystems IRIS, , isc.py.msg.SaveRequest :
Mask — , . * ?. : "Data*, Figure?". *.MaxLength — . , . 0, . $$$MaxStringLength.Name — ().Description — ().
Ens.StringResponse Id . Save Context.
isc.py.msg.RestoreRequest InterSystems IRIS Python:
Jupyter Notebook
Jupyter Notebook — - , , , . Python Gateway BPL- Jupyter Notebook. , executor Python 3.
, Python . - PythonGateway Jupyter Notebook. :
-. :


- InterSystems IRIS 2019.2+.
- PythonGateway v0.8+ (
isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints isc.py.ens.ProcessUtils). - ObjectScript .
do ##class(isc.py.util.Jupyter).Install() .
.
MLToolkit — , , -. Python Gateway MLToolkit Python , Python ( Data Scientists), , AI/ML- InterSystems IRIS.
MLToolkit — GitHub-, GitHub- InterSystems. , , MLToolkit, Python Gateway. ( ) , , . ML Toolkit, , : MLToolkit@intersystems.com :
, InterSystems IRIS , , . ; AI/ML – MLToolkit@intersystems.com.