بوابة Python في InterSystems IRIS

تتناول هذه المقالة بوابة Python ، وهي مشروع مجتمع مفتوح المصدر لمنصة بيانات InterSystems IRIS. يتيح لك هذا المشروع تنسيق أي خوارزميات تعلم آلي تم إنشاؤها في Python (البيئة الرئيسية للعديد من علماء البيانات) ، واستخدام العديد من المكتبات الجاهزة لإنشاء حلول AI / ML تحليلية آلية على منصة InterSystems IRIS بسرعة. في هذه المقالة ، سأوضح لك كيف يمكن لـ InterSystems IRIS تنسيق عمليات Python ، وتنفيذ نقل بيانات فعال ثنائي الاتجاه ، وإنشاء عمليات تجارية ذكية.

خطة

  1. مقدمة.
  2. أدوات.
  3. التثبيت.
  4. API.
  5. التوافقية.
  6. دفتر جوبيتر.
  7. الاستنتاجات.
  8. روابط.
  9. ML Toolkit.

مقدمة

Python هي لغة برمجة عالية المستوى للأغراض العامة تركز على تحسين إنتاجية المطور وقابلية قراءة الكود. في هذه السلسلة من المقالات ، سأتحدث عن إمكانيات استخدام لغة Python على النظام الأساسي InterSystems IRIS ، بينما التركيز الرئيسي لهذه المقالة هو استخدام Python كلغة لإنشاء نماذج التعلم الآلي وتطبيقها.

التعلم الآلي (ML) هو فئة من أساليب الذكاء الاصطناعي ، لا تعتبر السمة المميزة لها هي الحل المباشر لمشكلة ما ، بل التعلم في عملية حل العديد من المشكلات المماثلة.

أصبحت خوارزميات ونماذج التعلم الآلي أكثر شيوعًا. هناك العديد من الأسباب لذلك ، ولكن الأمر كله يتعلق بإمكانية الوصول والبساطة وتحقيق نتائج عملية. هل التجميع أو حتى نمذجة الشبكة العصبية هو تقنية جديدة؟

بالطبع لا ، ولكن في الوقت الحاضر ليست هناك حاجة لكتابة مئات الآلاف من أسطر التعليمات البرمجية لتشغيل نموذج واحد ، كما أن تكاليف إنشاء النماذج واستخدامها أصبحت أصغر وأصغر.

تتطور الأدوات - على الرغم من أننا لا نمتلك أدوات AI / ML موجهة بالكامل إلى واجهة المستخدم الرسومية ، فإن التقدم الذي شهدناه مع العديد من الفئات الأخرى لأنظمة المعلومات مثل BI (من كتابة التعليمات البرمجية إلى استخدام الأطر والحلول القابلة للتكوين الموجهة نحو واجهة المستخدم الرسومية) ، يُرى أيضًا في أدوات إنشاء الذكاء الاصطناعي / التعلم الآلي. لقد اجتزنا بالفعل مرحلة كتابة الكود واليوم نستخدم أطرًا لبناء وتدريب النماذج.

التحسينات الأخرى ، مثل القدرة على نشر نموذج مدرب مسبقًا حيث يجب على المستخدم النهائي إنهاء تدريب النموذج على بياناته المحددة ، يسهل أيضًا البدء في تطبيق التعلم الآلي. تسهل هذه التطورات تعلم التعلم الآلي ، سواء بالنسبة للمحترفين أو للشركات ككل.

من ناحية أخرى ، نقوم بجمع المزيد والمزيد من البيانات. من خلال منصة بيانات موحدة مثل InterSystems IRIS ، يمكن إعداد كل هذه المعلومات على الفور واستخدامها كمدخلات لنماذج التعلم الآلي.

مع الانتقال إلى السحابة ، أصبح إطلاق مشروعات الذكاء الاصطناعي / التعلم الآلي أسهل من أي وقت مضى. يمكننا فقط استهلاك الموارد التي نحتاجها. علاوة على ذلك ، بفضل التوازي الذي توفره المنصات السحابية ، يمكننا توفير الوقت الضائع.

لكن ماذا عن النتائج؟ هذا هو المكان الذي تصبح فيه الأمور أكثر تعقيدًا. هناك العديد من الأدوات لبناء النماذج ، والتي سأناقشها بعد ذلك. بناء نموذج جيد ليس بالأمر السهل ، لكن ماذا بعد ذلك؟ كما أن الاستفادة من استخدام النموذج من قبل الشركة ليست مهمة تافهة. جذر المشكلة هو الفصل بين أعباء العمل التحليلية والمعاملات ونماذج البيانات. عندما نقوم بتدريب نموذج ما ، عادة ما نقوم بذلك بناءً على البيانات التاريخية. لكن مكان النموذج المُنشأ هو في معالجة بيانات المعاملات. ما فائدة أفضل نموذج للكشف عن المعاملات الاحتيالية إذا قمنا بتشغيله مرة واحدة في اليوم؟ منذ فترة طويلة غادر المحتالون بالمال. نحتاج إلى تدريب النموذج على البيانات التاريخية ، لكننا نحتاج أيضًا إلى تطبيقه في الوقت الفعلي على البيانات الواردة الجديدة حتى تتمكن عملياتنا التجارية من العمل وفقًا للتنبؤات التي قدمها النموذج.

ML Toolkit هي مجموعة أدوات تفعل ذلك بالضبط: تجميع النماذج معًا وبيئة المعاملات بحيث يمكن استخدام النماذج التي تقوم بإنشائها بسهولة مباشرة في عمليات عملك. تعد Python Gateway جزءًا من ML Toolkit وتوفر تكاملاً مع لغة Python (على غرار R Gateway ، كونها جزءًا من ML Toolkit توفر التكامل مع لغة R).

أدوات

قبل المتابعة ، أود أن أصف بعض أدوات ومكتبات بايثون التي سنستخدمها لاحقًا.

تكنولوجيا

  • Python هي لغة برمجة عالية المستوى مفسرة وذات أغراض عامة. الميزة الرئيسية للغة هي مكتبة كبيرة من مكتبات الرياضيات و ML و AI. مثل ObjectScript ، إنها لغة موجهة للكائنات ، ولكن يتم تعريف كل شيء ديناميكيًا ، وليس ثابتًا. أيضا كل شيء هو كائن. تفترض المقالات اللاحقة معرفة عابرة باللغة. إذا كنت تريد أن تبدأ التعلم ، فإنني أوصي بالبدء بـ توثيق.
  • من أجل تماريننا التالية ، حدد Python 3.6.7 64 بت.
  • IDE: أنا استخدم PyCharm، ولكن بشكل عام كثير. إذا كنت تستخدم Atelier ، فهناك مكون إضافي Eclipse لمطوري Python. إذا كنت تستخدم VS Code ، فهناك امتداد لـ Python.
  • دفتر ملاحظات: بدلاً من IDE ، يمكنك كتابة نصوصك ومشاركتها في دفاتر الملاحظات عبر الإنترنت. الأكثر شعبية منهم كوكب المشتري.

المكتبات

فيما يلي قائمة (جزئية) بمكتبات التعلم الآلي:

  • نمباي - حزمة أساسية للحسابات الدقيقة.
  • الباندا - هياكل بيانات عالية الأداء وأدوات تحليل البيانات.
  • ماتبلوتليب - إنشاء الرسوم البيانية.
  • سيبورن - تصور البيانات على أساس matplotlib.
  • سكليرن - طرق التعلم الآلي.
  • XGBoost - خوارزميات التعلم الآلي ضمن منهجية تعزيز التدرج.
  • جينسيم - البرمجة اللغوية العصبية.
  • Keras - الشبكات العصبية.
  • Tensorflow هي منصة لإنشاء نماذج التعلم الآلي.
  • PyTorch هي عبارة عن منصة لإنشاء نماذج التعلم الآلي التي تركز على Python.
  • نيوكا - PMML من موديلات مختلفة.

تجعل تقنيات الذكاء الاصطناعي / التعلم الآلي الأعمال أكثر كفاءة وقدرة على التكيف. علاوة على ذلك ، أصبحت هذه التقنيات اليوم أسهل في التطوير والتنفيذ. ابدأ في التعرف على تقنيات الذكاء الاصطناعي / تعلم الآلة وكيف يمكن أن تساعد مؤسستك على النمو.

تركيب

هناك عدة طرق لتثبيت واستخدام Python Gateway:

  • GA
    • Windows
    • لينكس
    • ماك
  • عامل في حوض السفن
    • استخدم الصورة من DockerHub
    • ابتكر مظهرك الخاص

بغض النظر عن طريقة التثبيت ، ستحتاج إلى شفرة المصدر. المكان الوحيد لتنزيل الكود هو صفحة الإصدارات. يحتوي على إصدارات مستقرة تم اختبارها ، ما عليك سوى الحصول على أحدث إصدار. في الوقت الحالي هو 0.8 ، ولكن مع مرور الوقت سيكون هناك جديد. لا تقم باستنساخ / تنزيل المستودع ، قم بتنزيل أحدث إصدار.

GA

إذا كنت تقوم بتثبيت Python Gateway على نظام تشغيل ، فستحتاج أولاً (بغض النظر عن نظام التشغيل) إلى تثبيت Python. لهذا:

  1. قم بتثبيت Python 3.6.7 64 bit. يوصى بتثبيت 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... ايضا في اقرأني هناك قسم استكشاف الأخطاء وإصلاحها.

ماك

  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لتنزيل وتشغيل 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 - قيمة متغير بايثون x. إذا كانت حالة العودة sc هو خطأ أو var فارغة ، تحقق الملف التمهيدي — قسم استكشاف الأخطاء وإصلاحها.

API

تم تثبيت Python Gateway وقمت بالتحقق من أنها تعمل. حان الوقت لبدء استخدامه!
الواجهة الرئيسية لبايثون هي isc.py.Main. يقدم مجموعات الطرق التالية (جميعها تعود %Status):

  • تنفيذ الكود
  • نقل البيانات
  • ملحق

تنفيذ الكود

تسمح لك هذه الطرق بتنفيذ تعليمات برمجية بايثون عشوائية.

سلسلة بسيطة

SimpleString هي الطريقة الرئيسية. يتطلب 4 حجج اختيارية:

  • code هو سطر التعليمات البرمجية المطلوب تنفيذه. حرف تغذية السطر: $c(10).
  • returnVariable هو اسم المتغير الذي سيتم إرجاعه.
  • serialization - كيفية إجراء تسلسل returnVariable. 0 - سلسلة (افتراضي) ، 1 - repr.
  • result - إشارة ByRef إلى المتغير الذي تكتب فيه القيمة returnVariable.

أعلاه قمنا بما يلي:

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

في هذا المثال ، نقوم بتعيين متغير بايثون x قيمة Hello وتريد إرجاع قيمة متغير بايثون x إلى متغير ObjectScript var.

اكسيكود

يعد ExecuteCode بديلاً أكثر أمانًا وأقل تقييدًا SimpleString.
الخطوط في النظام الأساسي InterSystems IRIS محددة بـ 3 حرفًا ، وإذا كنت تريد تنفيذ جزء أطول من التعليمات البرمجية ، فأنت بحاجة إلى استخدام التدفقات.
يتطلب حجتين:

  • code - سلسلة أو دفق من كود بايثون ليتم تنفيذه.
  • variable - (اختياري) يخصص نتيجة التنفيذ code متغير بايثون هذا.

أقترح استخدام:

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

في هذا المثال ، نضرب 2 في 3 ونخزن النتيجة في متغير بايثون 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) -احصل على تسلسل مخلل (أو شبت) لمتغير.

دعنا نحاول الحصول على المتغير 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) - يُنشئ مجموعة بيانات (حيوانات الباندا dataframe أو list) من استعلام SQL وضبطه على متغير python variable. حقيبة بلاستيكية isc.py يجب أن تكون متاحة في المنطقة namespace - يتم تنفيذ الطلب هناك.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - تحميل البيانات العالمية global من منخفض start إلى end في بايثون كمتغير نوع type: list، أو الباندا dataframe. وصف الحجج الاختيارية mask و labels متاح في وثائق الفصل والمستودعات مستندات نقل البيانات.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - تحميل بيانات الطبقة class من معرف start إلى end في بايثون كمتغير نوع type: list، أو الباندا dataframe. properties - قائمة (مفصولة بفاصلة) بخصائص الفئة التي سيتم تحميلها في مجموعة البيانات. دعم الأقنعة * и ?. تقصير - * (جميع الخصائص). ملكية %%CLASSNAME تجاهله.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - تحميل بيانات الجدول table من معرف start إلى end في بيثون.

ExecuteQuery - عالمي (سيتم تمرير أي استعلام SQL صالح إلى Python). لكن، ExecuteGlobal ولفه ExecuteClass и ExecuteTable العمل مع عدد من القيود. إنها أسرع بكثير (3-5 مرات أسرع من مشغل ODBC و 20 مرة أسرع من ExecuteQuery). مزيد من المعلومات في مستندات نقل البيانات.
كل هذه الطرق تدعم نقل البيانات من أي منطقة. حقيبة بلاستيكية isc.py يجب أن تكون متاحة في المنطقة المستهدفة.

تنفيذ الاستعلام

ExecuteQuery(request, variable, type, namespace) - تمرير نتائج أي استعلام SQL صالح إلى Python. هذه هي أبطأ طريقة لنقل البيانات. استخدمه إذا ExecuteGlobal وأغلفةها غير متوفرة.

الحجج:

  • query - استعلام SQL.
  • variable - اسم متغير بايثون الذي كتبت فيه البيانات.
  • type - list أو الباندا dataframe.
  • namespace - المنطقة التي سيتم تنفيذ الطلب فيها.

إعدام جلوبال

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - تمرير عالمي إلى بايثون.

الحجج:

  • global هو اسم العالمية بدون ^
  • variable - اسم متغير بايثون الذي كتبت فيه البيانات.
  • type - list أو الباندا dataframe.
  • start - أول اشتراك عالمي. بالضرورة %Integer.
  • end هو آخر اشتراك عالمي. بالضرورة %Integer.
  • mask - قناع القيم العالمية. يمكن أن يكون القناع أقصر من عدد الحقول العامة (في هذه الحالة سيتم تخطي الحقول الموجودة في النهاية). كيفية تنسيق القناع:
    • + تمرير القيمة كما هي.
    • - تخطي القيمة.
    • b - النوع المنطقي (0 - False، كل ما تبقى - True).
    • d - التاريخ (من $ horolog ، على Windows من 1970 ، على Linux من عام 1900).
    • t - الوقت (الهورولوج ، ثوانٍ بعد منتصف الليل).
    • m - الطابع الزمني (سنة - شهر - يوم ساعة: دقيقة: سلسلة تنسيق ثانية).
  • labels -٪ قائمة أسماء الأعمدة. العنصر الأول هو اسم منخفض.
  • namespace - المنطقة التي سيتم تنفيذ الطلب فيها.

ExecuteClass

التفاف على ExecuteGlobal. يقوم بإعداد مكالمة بناءً على تعريف الفئة ExecuteGlobal ويدعوه.

ExecuteClass(class, variable, type, start, end, properties, namespace) - تمرير بيانات الفصل إلى بايثون.

الحجج:

  • class - اسم الفئة
  • variable - اسم متغير بايثون الذي كتبت فيه البيانات.
  • type - list أو الباندا dataframe.
  • start - معرف البداية.
  • end - معرف نهائي
  • properties - قائمة (مفصولة بفاصلة) بخصائص الفئة التي سيتم تحميلها في مجموعة البيانات. دعم الأقنعة * и ?. تقصير - * (جميع الخصائص). ملكية %%CLASSNAME تجاهله.
  • namespace - المنطقة التي سيتم تنفيذ الطلب فيها.

يتم تمرير جميع الخصائص كما هي باستثناء خصائص النوع %Date, %Time, %Boolean и %TimeStamp - يتم تحويلها إلى فئات بايثون المقابلة.

ExecuteTable

التفاف على ExecuteClass. يترجم اسم الجدول إلى اسم فئة ومكالمات ExecuteClass. إمضاء:

ExecuteTable(table, variable, type, start, end, properties, namespace) - تمرير بيانات الجدول إلى بايثون.

الحجج:

  • 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 ، لينكس 1900-01-01، لجنة الهدنة العسكرية). يستخدم %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

في الأساس ، عملية Pyhton عبارة عن غلاف انتهى isc.py.Main. عملية isc.py.ens.Operation يسمح بالتفاعل مع عملية Python من منتجات InterSystems IRIS. يتم دعم خمسة طلبات:

  • isc.py.msg.ExecutionRequest لتنفيذ كود بايثون. عائدات isc.py.msg.ExecutionResponse مع نتيجة التنفيذ وقيم المتغيرات المطلوبة.
  • isc.py.msg.StreamExecutionRequest لتنفيذ كود بايثون. عائدات 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 لحفظ سياق بايثون. عائدات Ens.StringResponse مع معرف السياق.
  • isc.py.msg.RestoreRequest لاستعادة سياق بايثون.

    وبالإضافة إلى ذلك، isc.py.ens.Operation له إعدادين:

    • Initializer - اختيار فئة تنفذ الواجهة isc.py.init.Abstract. يمكن استخدامه لتحميل الوظائف والوحدات والفئات وما شابه ذلك. يتم تنفيذه مرة واحدة عند بدء العملية.
    • PythonLib - (Linux فقط) إذا رأيت أخطاء في التمهيد ، فاضبط قيمته على libpython3.6m.so أو حتى في المسار الكامل لمكتبة بايثون.

إنشاء العمليات التجارية

هناك فئتان متاحتان تسهلان تطوير العمليات التجارية:

  • isc.py.ens.ProcessUtils يسمح لك باستخراج التعليقات التوضيحية من الأنشطة ذات الاستبدال المتغير.
  • isc.py.util.BPEmulator يجعل من السهل اختبار العمليات التجارية باستخدام 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} إرجاع خاصية دليل عمل الكائن process، وهو مثيل للفئة isc.py.test.Process أولئك. عملية الأعمال الحالية.
  • ${%PopulateUtils:Integer:1:100} يستدعي طريقة Integer فئة %PopulateUtilsالحجج عابرة 1 и 100، بإرجاع عدد صحيح عشوائي في النطاق 1...100.

اختبار عملية الأعمال

تتوفر عملية الإنتاج والاختبار التجارية بشكل افتراضي كجزء من Python Gateway. لاستخدامها:

  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:

بوابة Python في InterSystems IRIS

تنفيذ الكود

أهم استدعاء هو تنفيذ كود بايثون:

بوابة Python في InterSystems IRIS

طلب مستخدم isc.py.msg.ExecutionRequest، ها هي خصائصه:

  • Code - كود بايثون.
  • SeparateLines - ما إذا كان سيتم تقسيم الكود إلى أسطر للتنفيذ. $c(10) (n) لفصل السلاسل. لاحظ أنه لا يوصى بمعالجة الرسالة بأكملها دفعة واحدة ، فهذه الوظيفة مخصصة للمعالجة فقط def والتعبيرات متعددة الأسطر المماثلة. تقصير 0.
  • Variables عبارة عن قائمة من المتغيرات مفصولة بفواصل والتي ستتم إضافتها إلى الاستجابة.
  • Serialization - كيفية إجراء تسلسل للمتغيرات التي نريد إرجاعها. خيارات: Str, Repr, JSON, Pickle и Dill، تقصير Str.

في حالتنا ، نقوم بتعيين الخاصية فقط Code، بحيث تستخدم جميع الخصائص الأخرى قيمها الافتراضية. قمنا بإعداده عن طريق الاتصال process.GetAnnotation("Import pandas")، والتي تقوم في وقت التشغيل بإرجاع تعليق توضيحي بعد إجراء الاستبدال المتغير. أخيرا الكود import pandas as pd سيتم تمريرها إلى بايثون. GetAnnotation يمكن أن يكون مفيدًا للحصول على نصوص Python متعددة الأسطر ، ولكن لا توجد قيود على طريقة الحصول على التعليمات البرمجية. يمكنك تعيين الخاصية Code بأي طريقة مناسبة لك.

الحصول على المتغيرات

تحدي آخر مثير للاهتمام باستخدام isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

بوابة Python في InterSystems IRIS

تحسب مصفوفة الارتباط في جانب بايثون وتستخرج المتغير corrmat العودة إلى InterSystems IRIS بتنسيق JSON عن طريق تعيين خصائص الطلب:

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

يمكننا أن نرى النتائج في Visual Trace:

بوابة Python في InterSystems IRIS

وإذا احتجنا إلى هذه القيمة في BP ، فيمكن الحصول عليها على النحو التالي: callresponse.Variables.GetAt("corrmat").

نقل البيانات

بعد ذلك ، دعنا نتحدث عن نقل البيانات من InterSystems IRIS إلى Python ، فكل طلبات نقل البيانات تنفذ الواجهة isc.py.msg.DataRequest، والذي يوفر الخصائص التالية:

  • Variable هو متغير بايثون يتم كتابة البيانات إليه.
  • 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 لنقل البيانات عالميًا.

في عملية الاختبار ، انظر إلى النشاط RAWحيث isc.py.msg.QueryRequest يظهر في العمل.

بوابة Python في InterSystems IRIS

حفظ / استعادة سياق بايثون

أخيرًا ، يمكننا تخزين سياق 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:

  • ContextId هو معرف السياق.
  • Clear - امسح السياق قبل الاستعادة.

مفكرة Jupyter

مفكرة Jupyter هو تطبيق ويب مفتوح المصدر يسمح لك بإنشاء ونشر دفاتر ملاحظات تحتوي على تعليمات برمجية ومرئيات ونص. تتيح لك بوابة Python عرض عمليات BPL وتحريرها كجهاز Jupyter Notebook. لاحظ أن منفذ Python 3 العادي قيد الاستخدام حاليًا.

يفترض هذا الامتداد أن التعليقات التوضيحية تحتوي على كود Python وتستخدم أسماء الأنشطة كعناوين سابقة. أصبح من الممكن الآن تطوير عمليات الأعمال في PythonGateway في Jupyter Notebook. إليك ما هو ممكن:

  • إنشاء عمليات تجارية جديدة
  • حذف العمليات التجارية
  • قم بإنشاء أنشطة جديدة
  • تغيير الأنشطة
  • حذف الأنشطة

ها هو فيديو تجريبي. وبعض لقطات الشاشة:

عملية المستكشف

بوابة Python في InterSystems IRIS

محرر العمليات

بوابة Python في InterSystems IRIS

تركيب

  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 (البيئة الرئيسية للعديد من علماء البيانات) ، واستخدام العديد من المكتبات الجاهزة لإنشاء ذكاء اصطناعي تحليلي آلي / تكيفي سريعًا حلول ML على منصة InterSystems IRIS.

مراجع

MLToolkit

مجموعة مستخدمي MLToolkit عبارة عن مستودع GitHub خاص تم إنشاؤه كجزء من مؤسسة GitHub التابعة لشركة InterSystems. إنه موجه للمستخدمين الخارجيين الذين يقومون بتثبيت مكونات MLToolkit أو تعلمها أو استخدامها بالفعل ، بما في ذلك Python Gateway. لدى المجموعة عدد من الحالات المنفذة (مع كود المصدر وبيانات الاختبار) في مجالات التسويق والتصنيع والطب والعديد من الصناعات الأخرى. للانضمام إلى مجموعة مستخدمي ML Toolkit ، يرجى إرسال بريد إلكتروني قصير إلى العنوان التالي: [البريد الإلكتروني محمي] وقم بتضمين المعلومات التالية في رسالتك:

  • اسم مستخدم GitHub
  • منظمة (أنت تعمل أو تدرس)
  • المنصب (موقعك الفعلي في مؤسستك ، إما "طالب" أو "مستقل").
  • بلد

بالنسبة لأولئك الذين قرأوا المقالة والمهتمين بـ InterSystems IRIS كمنصة لتطوير أو استضافة آليات الذكاء الاصطناعي والتعلم الآلي ، ندعوك لمناقشة السيناريوهات المحتملة التي تهم مؤسستك. سنحلل بسهولة احتياجات مؤسستك ونحدد خطة عمل مشتركة ؛ عنوان البريد الإلكتروني للاتصال بمجموعة خبراء AI / ML - [البريد الإلكتروني محمي].

المصدر: www.habr.com

إضافة تعليق