InterSystems IRIS 中的 Python 網關

本文介紹的是 Python Gateway,這是 InterSystems IRIS 資料平台的開源社群專案。 該專案可讓您編排用 Python(許多資料科學家的主要環境)創建的任何機器學習演算法,使用大量現成的程式庫在 InterSystems IRIS 平台上快速建立自適應機器人分析 AI/ML 解決方案。 在本文中,我將展示 InterSystems IRIS 如何在 Python 中編排流程、有效率地通訊雙向資料以及建立智慧業務流程。

計畫

  1. 簡介。
  2. 工具。
  3. 安裝。
  4. API。
  5. 互操作性。
  6. Jupyter 筆記本。
  7. 結論。
  8. 鏈接。
  9. 機器學習工具包。

介紹

Python 是一種高階通用程式語言,旨在提高開發人員的工作效率和程式碼可讀性。 在本系列文章中,我將討論在 InterSystems IRIS 平台上使用 Python 的可能性,本文的主要重點是使用 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 工具和函式庫。

技術

  • Python是一種解釋型、高階通用程式語言。 該語言的主要優勢是其龐大的數學、機器學習和人工智慧庫。 與 ObjectScript 一樣,它是一種物件導向的語言,但一切都是動態定義的,而不是靜態定義的。 而且一切都是物件。 後面的文章假定您對這門語言有一定的了解。 如果你想開始學習,我建議從 文件.
  • 對於我們後續的練習,設置 Python 3.6.7 64 位.
  • IDE:我用 PyCharm,但一般來說他們 很多。 如果您使用 Atelier,有一個針對 Python 開發人員的 Eclipse 外掛程式。 如果您使用 VS Code,則有一個 Python 擴充功能。
  • 筆記本:您可以在線上筆記本中編寫和分享腳本,而不是使用 IDE。 其中最受歡迎的是 朱皮特.

圖書館

以下是機器學習庫的(非詳盡)清單:

  • 脾氣暴躁的 — 用於精確計算的基本包。
  • 大熊貓 — 高效能資料結構與資料分析工具。
  • Matplotlib — 圖表的創建。
  • 海生 — 基於 matplotlib 的資料視覺化。
  • 斯克萊恩 ——機器學習方法。
  • XGBoost - 梯度提升方法框架內的機器學習演算法。
  • 金西姆 ——自然語言處理。
  • 凱拉斯 - 神經網路。
  • 張量流 — 用於建立機器學習模型的平台。
  • 火炬 是一個用於創建機器學習模型的平台,專注於Python。
  • 尼約卡 - 來自各種模型的 PMML。

AI/ML 技術使業務更有效率、更具適應性。 此外,如今這些技術變得越來越容易開發和實施。 開始了解 AI/ML 技術以及它們如何幫助您的組織發展。

安裝

安裝和使用Python Gateway有多種方法:

  • 操作系統
    • Windows
    • Linux
    • Mac
  • 碼頭工人
    • 使用 DockerHub 中的映像
    • 創建您自己的外觀

無論採用哪種安裝方法,您都需要原始程式碼。 下載代碼的唯一位置是 發布頁面。 它包含經過測試的穩定版本,只需使用最新版本即可。 目前是 0.8,但隨著時間的推移將會有新的。 不要克隆/下載儲存庫,請下載最新版本。

操作系統

如果要在作業系統上安裝 Python Gateway,則首先(無論作業系統為何)需要安裝 Python。 為了這:

  1. 安裝Python 3.6.7 64位。 建議將Python安裝在預設目錄中。
  2. 安裝模組 dill: pip install dill.
  3. 下載 ObjectScript 程式碼(即 do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1))到任何有產品的區域。 如果您想要現有區域來支援產品,請運行: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. 地方 標註 DLL/SO/DYLIB 到文件夾 bin 您的 InterSystems IRIS 實例。 庫檔案必須在返回的路徑中可用 write ##class(isc.py.Callout).GetLib().

Windows

  1. 確保環境變數 PYTHONHOME 指向Python 3.6.7。
  2. 確保系統環境變數是 PATH 包含一個變數 PYTHONHOME (或它指向的目錄)。

Linux(Debian/Ubuntu)

  1. 檢查環境變數是否為 PATH 它包含 /usr/lib и /usr/lib/x86_64-linux-gnu。 使用文件 /etc/environment 設定環境變數。
  2. 如果出現錯誤 undefined symbol: _Py_TrueStruct 設定設定 PythonLib。 也在 自述 有一個故障排除部分。

Mac

  1. 目前僅支援Python 3.6.7 python.org。 檢查變數 PATH.

如果變更了環境變量,請重新啟動 InterSystems 產品。

碼頭工人

使用容器有很多優點:

  • 可移植性
  • 效用
  • 絕緣
  • 亮度
  • 不變性

看看這個 系列文章 有關將 Docker 與 InterSystems 產品結合使用的詳細資訊。

目前所有 Python Gateway 版本都是基於容器的 2019.4.

準備好影像

跑步: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest下載並運行帶有 InterSystems IRIS Community Edition 的 Python Gateway。 就這樣。

創建您自己的外觀

若要建置 docker 映像,請在儲存庫的根目錄中執行: 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 映像:

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 空,檢查 自述文件 - 故障排除部分.

API

Python Gateway 已安裝,並且您已驗證它是否有效。 是時候開始使用它了!
Python 的主要介面是 isc.py.Main。 它提供了以下幾組方法(全部返回 %Status):

  • 程式碼執行
  • 數據傳輸
  • 輔助的

程式碼執行

這些方法可讓您執行任意 Python 程式碼。

簡單字串

SimpleString - 這是主要方法。 它需要 4 個可選參數:

  • code — 要執行的程式碼行。 換行符: $c(10).
  • returnVariable — 要傳回的變數的名稱。
  • serialization - 如何序列化 returnVariable。 0 — 字串(預設),1 — 重複。
  • result — ByRef 對寫入值的變數的引用 returnVariable.

上面我們做了:

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

在此範例中,我們指派給一個 Python 變數 xHello 想要傳回 Python 變數的值 x 到 ObjectScript 變數 var.

執行程式碼

ExecuteCode 是一種更安全、限制更少的替代方案 SimpleString.
InterSystems IRIS平台中的行限制為3個字符,如果要執行更長的程式碼,則需要使用執行緒。
接受兩個論點:

  • code — 要執行的一行或一行 Python 程式碼。
  • variable —(可選)指派執行結果 code 這個Python變數。

使用範例:

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

在此範例中,我們將 2 乘以 3 並將結果寫入 Python 變量 y.

數據傳輸

將資料傳入和傳出 Python。

Python -> InterSystems IRIS

有 4 種方法可以在 InterSystems IRIS 中取得 Python 變數的值,這取決於您需要的序列化:

  • 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) -get 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 dataframelist) 來自 sql 查詢並將其設定為 Python 變量 variable。 塑料袋 isc.py 必須在該地區可用 namespace — 請求將在那裡執行。
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - 載入全域數據 global 從下標 startend 在Python中作為類型變數 type: list,或熊貓 dataframe。 可選參數的描述 masklabels 在類別文檔和儲存庫中可用 資料傳輸文件.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - 載入類別數據 class 來自 ID startend 在Python中作為類型變數 type: list,或熊貓 dataframe. properties — 需要載入到資料集中的類別屬性清單(以逗號分隔)。 支持口罩 * и ?。 預設 - * (所有屬性)。 財產 %%CLASSNAME 被忽略。
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - 載入表格數據 table 來自 ID startend 在Python中。

ExecuteQuery — 一般(任何正確的 SQL 查詢都會傳遞給 Python)。 然而, ExecuteGlobal 和它的包裝紙 ExecuteClass и ExecuteTable 工作有許多限制。 它們速度更快(比 ODBC 驅動程式快 3-5 倍,比 ODBC 驅動程式快 20 倍) ExecuteQuery)。 更多資訊請訪問 資料傳輸文件.
所有這些方法都支援來自任何區域的資料傳輸。 塑膠袋 isc.py 必須在目標區域可用。

執行查詢

ExecuteQuery(request, variable, type, namespace) — 將任何正確的 SQL 查詢的結果傳輸到 Python。 這是最慢的資料傳輸方法。 如果使用它 ExecuteGlobal 且它的包裝不可用。

論據:

  • query - SQL查詢。
  • variable — 寫入資料的 Python 變數的名稱。
  • type - list 或熊貓 dataframe.
  • namespace — 將執行請求的區域。

執行全域

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - 在Python中傳遞一個全域變數。

論據:

  • global - 全域名稱不帶 ^
  • variable — 寫入資料的 Python 變數的名稱。
  • type - list 或熊貓 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 — %列名稱清單。 第一個元素是下標的名稱。
  • namespace — 將執行請求的區域。

執行類別

包裹起來 ExecuteGlobal。 根據類別定義,準備調用 ExecuteGlobal 並打電話給他。

ExecuteClass(class, variable, type, start, end, properties, namespace) - 在Python中傳遞類別資料。

論據:

  • class - 班級名稱
  • variable — 寫入資料的 Python 變數的名稱。
  • type - list 或熊貓 dataframe.
  • start — 起始 ID。
  • end — 最終 ID
  • properties — 需要載入到資料集中的類別屬性清單(以逗號分隔)。 支持口罩 * и ?。 預設 - * (所有屬性)。 財產 %%CLASSNAME 被忽略。
  • namespace — 將執行請求的區域。

除類型屬性外,所有屬性均按原樣傳遞 %Date, %Time, %Boolean и %TimeStamp - 它們被轉換成對應的Python類別。

執行表

包裹起來 ExecuteClass。 將表名翻譯為類別名並調用 ExecuteClass。 簽名:

ExecuteTable(table, variable, type, start, end, properties, namespace) - 將表格資料​​傳遞給Python。

論據:

  • table — 表名。
    所有其他參數均按原樣傳遞給 ExecuteClass.

筆記

  • ExecuteGlobal, ExecuteClass и ExecuteTable 工作速度一樣快。
  • ExecuteGlobal 比以下快 20 倍 ExecuteQuery 在大型資料集上(傳輸時間 >0.01 秒)。
  • ExecuteGlobal, ExecuteClass и ExecuteTable 使用以下結構處理全域變數: ^global(key) = $lb(prop1, prop2, ..., propN) 哪裡 key — 一個整數。
  • ExecuteGlobal, ExecuteClass и ExecuteTable 支援的值範圍 %Date 對應範圍 mktime 並且取決於作業系統(窗口: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。 它允許我們:

  • 在 Python 中執行程式碼
  • 保存/恢復 Python 上下文
  • 從 Python 載入和接收數據

基本上,Python 操作是一個包裝器 isc.py.Main。 手術 isc.py.ens.Operation 提供與 InterSystems IRIS 產品中的 Python 進程互動的能力。 支援五種查詢:

  • isc.py.msg.ExecutionRequest 執行Python程式碼。 退貨 isc.py.msg.ExecutionResponse 以及執行結果和請求的變數的值。
  • isc.py.msg.StreamExecutionRequest 執行Python程式碼。 退貨 isc.py.msg.StreamExecutionResponse 執行結果和請求變數的值。 類似物 isc.py.msg.ExecutionRequest,但接受並返回流而不是字串。
  • isc.py.msg.QueryRequest 傳輸執行 SQL 查詢的結果。 退貨 Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest 用於傳遞全域/類別/表資料。 退貨 Ens.Response.
  • isc.py.msg.SaveRequest 保存Python上下文。 退貨 Ens.StringResponse 與上下文 ID。
  • isc.py.msg.RestoreRequest 恢復Python上下文。

    另外, isc.py.ens.Operation 有兩個設定:

    • Initializer — 選擇一個實作介面的類 isc.py.init.Abstract。 它可用於載入函數、模組、類別等。 進程啟動時執行一次。
    • PythonLib -(僅限 Linux)如果載入時看到錯誤,請將其值設為 libpython3.6m.so 甚至是 Python 函式庫的完整路徑。

建立業務流程

有兩個類別可以促進業務流程的發展:

  • isc.py.ens.ProcessUtils 允許您透過變數替換從活動中提取註釋。
  • isc.py.util.BPEmulator 可以輕鬆地使用 Python 測試業務流程。 它可以在目前流程中執行業務流程(Python部分)。

變數替換

所有業務流程繼承自 isc.py.ens.ProcessUtils,可以使用該方法 GetAnnotation(name) 透過名稱取得活動註釋值。 活動註釋可以包含在傳遞到 Python 之前將在 InterSystems IRIS 端計算的變數。 以下是變數替換的語法:

  • ${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 網關的一部分提供。 使用它們:

  1. 在作業系統終端中,運作: pip install pandas matplotlib seaborn.
  2. 在 InterSystems IRIS 終端機中,運行: do ##class(isc.py.test.CannibalizationData).Import() 填寫測試數據。
  3. 推出產品 isc.py.test.Production.
  4. 發送請求類型 Ens.Request в isc.py.test.Process.

讓我們看看它們是如何協同工作的。 打開 isc.py.test.Process 在 BPL 編輯器中:

InterSystems IRIS 中的 Python 網關

程式碼執行

最重要的挑戰是執行 Python 程式碼:

InterSystems IRIS 中的 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:

InterSystems IRIS 中的 Python 網關

它在Python端計算相關矩陣並提取變量 corrmat 透過設定請求屬性傳回 JSON 格式的 InterSystems IRIS:

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

我們可以在Visual Trace看到結果:

InterSystems IRIS 中的 Python 網關

如果我們在 BP 中需要這個值,我們可以這樣取得: callresponse.Variables.GetAt("corrmat").

數據傳輸

接下來我們來談談從InterSystems IRIS到Python的資料傳輸;所有資料傳輸的請求都實作該介面 isc.py.msg.DataRequest它提供以下屬性:

  • Variable — 寫入資料的 Python 變數。
  • Type — 變數類型: 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 用於全球資料傳輸。

測試過程中,查看activity RAW哪裡 isc.py.msg.QueryRequest 體現在行動上。

InterSystems IRIS 中的 Python 網關

保存/恢復 Python 上下文

最後,我們可以將 Python 上下文保存在 InterSystems IRIS 中,為此,我們將發送 isc.py.msg.SaveRequest 帶參數:

  • Mask — 僅儲存與遮罩相符的變數。 支持的 * и ?. 例子: "Data*, Figure?"。 預設 *.
  • MaxLength — 儲存變數的最大長度。 如果變數的序列化較長,它將被忽略。 設定為 0 可取得任意長度的變數。 預設 $$$MaxStringLength.
  • Name — 上下文名稱(可選)。
  • Description — 上下文描述(可選)。

回報 Ens.StringResponse с Id 保存的上下文。 測試過程中,查看activity Save Context.

相關請求 isc.py.msg.RestoreRequest 將上下文從 InterSystems IRIS 載入到 Python 中:

  • ContextId — 上下文識別碼。
  • Clear — 在恢復之前清除上下文。

Jupyter筆記本

Jupyter筆記本 是一個開源 Web 應用程序,可讓您建立和發布包含程式碼、視覺化和文字的筆記本。 Python Gateway 可讓您以 Jupyter Notebook 的形式檢視和編輯 BPL 流程。 請注意,目前使用的是普通的 Python 3 執行器。

此擴充假定註解包含 Python 程式碼並使用活動名稱作為前面的標題。 現在可以在 Jupyter Notebook 中開發 PythonGateway 業務流程。 這是可能的:

  • 建立新的業務流程
  • 刪除業務流程
  • 建立新活動
  • 改變活動
  • 刪除活動

這裡 演示視頻。 以及一些螢幕截圖:

流程瀏覽器

InterSystems IRIS 中的 Python 網關

流程編輯器

InterSystems IRIS 中的 Python 網關

安裝

  1. 您將需要 InterSystems IRIS 2019.2+。
  2. 安裝PythonGateway v0.8+(只需 isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. 從儲存庫更新 ObjectScript 程式碼。
  4. 執行 do ##class(isc.py.util.Jupyter).Install() 並按照提示操作。

Документация.

發現

MLToolkit 是一組工具,目標是將模型和事務環境結合起來,以便建立的模型可以輕鬆地直接在您的業務流程中使用。 Python Gateway 是 MLToolkit 的一部分,提供與 Python 語言的集成,讓您可以編排在 Python(許多資料科學家的主要環境)中創建的任何機器學習演算法,使用大量現成的庫快速創建自適應機器人分析 AI/ InterSystems 平台IRIS 上的機器學習解決方案。

引用

機器學習工具包

MLToolkit 使用者群組是一個私人 GitHub 儲存庫,是作為 InterSystems 公司 GitHub 組織的一部分而建立。 它適用於安裝、學習或已經使用 MLToolkit 元件(包括 Python Gateway)的外部使用者。 集團在行銷、製造、醫藥等眾多產業領域擁有多個實施案例(附原始碼和測試資料)。 若要加入 ML Toolkit 使用者群組,請傳送一封簡短的電子郵件至以下位址: [電子郵件保護] 並在信中包含以下資訊:

  • GitHub 使用者名稱
  • 組織(你工作或學習)
  • 職位(您在組織中的實際職位,「學生」或「獨立」)。
  • 國家

對於那些已閱讀本文並對 InterSystems IRIS 作為開發或託管人工智慧和機器學習引擎平台的功能感興趣的人,我們邀請您討論您的企業感興趣的可能場景。 我們很樂意分析貴公司的需求並共同確定行動計劃; 我們的 AI/ML 專家團隊的聯絡電子郵件地址 – [電子郵件保護].

來源: www.habr.com

添加評論