دروازه پایتون در InterSystems IRIS

این مقاله درباره Python Gateway است، یک پروژه جامعه منبع باز برای پلتفرم داده InterSystems IRIS. این پروژه به شما امکان می دهد هر الگوریتم یادگیری ماشینی ایجاد شده در پایتون (محیط اصلی بسیاری از دانشمندان داده) را هماهنگ کنید، از کتابخانه های آماده متعددی برای ایجاد سریع راه حل های AI / ML تحلیلی رباتیک و تطبیقی ​​در پلتفرم InterSystems IRIS استفاده کنید. در این مقاله، من نشان خواهم داد که چگونه InterSystems IRIS می‌تواند فرآیندها را در پایتون هماهنگ کند، داده‌های دو طرفه را به طور موثر ارتباط برقرار کند و فرآیندهای تجاری هوشمند ایجاد کند.

برنامه ریزی کنید

  1. مقدمه
  2. ابزار.
  3. نصب و راه اندازی
  4. API
  5. قابلیت همکاری.
  6. نوت بوک ژوپیتر.
  7. نتیجه گیری
  8. پیوندها.
  9. MLToolkit.

معرفی

پایتون یک زبان برنامه نویسی سطح بالا و همه منظوره است که هدف آن بهبود بهره وری توسعه دهندگان و خوانایی کد است. در این سری از مقالات، من در مورد امکانات استفاده از Python در پلتفرم InterSystems IRIS بحث خواهم کرد، با تمرکز اصلی این مقاله استفاده از Python به عنوان یک زبان برای ایجاد و اجرای مدل های یادگیری ماشین.

یادگیری ماشینی (ML) دسته ای از روش های هوش مصنوعی است که ویژگی بارز آن حل مستقیم یک مسئله نیست، بلکه یادگیری در فرآیند حل بسیاری از مسائل مشابه است.

الگوریتم‌ها و مدل‌های یادگیری ماشین رایج‌تر می‌شوند. دلایل زیادی برای این وجود دارد، اما همه چیز به دسترسی، سادگی و دستیابی به نتایج عملی برمی گردد. آیا خوشه بندی یا حتی مدل سازی شبکه های عصبی یک فناوری جدید است؟

البته نه، اما امروزه برای اجرای یک مدل نیازی به نوشتن صدها هزار خط کد نیست و هزینه ایجاد و استفاده از مدل ها کمتر و کمتر می شود.

ابزارها در حال تکامل هستند - در حالی که ابزارهای هوش مصنوعی/ML کاملاً مبتنی بر رابط کاربری گرافیکی نداریم، پیشرفتی که در بسیاری از کلاس‌های دیگر از سیستم‌های اطلاعاتی، مانند BI (از نوشتن کد تا استفاده از چارچوب‌ها و راه‌حل‌های قابل تنظیم مبتنی بر GUI) دیده‌ایم، بوده است. همچنین در ابزارهای ایجاد AI/ML مشاهده شده است. ما قبلاً مرحله کدنویسی را پشت سر گذاشته ایم و امروز از فریمورک ها برای ساخت و آموزش مدل ها استفاده می کنیم.

سایر پیشرفت‌ها، مانند توانایی توزیع یک مدل از پیش آموزش‌دیده که در آن کاربر نهایی باید آموزش مدل را بر اساس داده‌های خاص خود به پایان برساند، همچنین شروع یادگیری ماشین را آسان‌تر می‌کند. این پیشرفت‌ها یادگیری ماشینی را برای افراد حرفه‌ای و به طور کلی شرکت‌ها بسیار آسان‌تر می‌کند.

از سوی دیگر، ما در حال جمع آوری داده های بیشتر و بیشتری هستیم. با یک پلت فرم داده یکپارچه مانند InterSystems IRIS، همه این اطلاعات را می توان بلافاصله آماده کرد و به عنوان ورودی مدل های یادگیری ماشین استفاده کرد.

با حرکت به سمت فضای ابری، راه اندازی پروژه های AI/ML ساده تر از همیشه می شود. ما فقط می توانیم منابع مورد نیاز خود را مصرف کنیم. علاوه بر این، به لطف موازی سازی ارائه شده توسط سیستم عامل های ابری، می توانیم در زمان صرف شده صرفه جویی کنیم.

اما در مورد نتایج چطور؟ اینجاست که همه چیز پیچیده تر می شود. ابزارهای زیادی برای ساخت مدل وجود دارد که در ادامه به آنها خواهم پرداخت. ساختن یک مدل خوب آسان نیست، اما بعد از آن چه؟ کسب سود از استفاده از مدل کسب و کار نیز یک کار بی اهمیت است. ریشه مشکل جداسازی حجم کاری تحلیلی و تراکنشی و مدل های داده است. وقتی یک مدل را آموزش می‌دهیم، معمولاً آن را بر اساس داده‌های تاریخی انجام می‌دهیم. اما مکان مدل ساخته شده در پردازش داده های تراکنشی است. اگر روزی یک بار آن را اجرا کنیم، بهترین مدل شناسایی تراکنش های تقلبی چه فایده ای دارد؟ کلاهبرداران مدت هاست که با پول ترک کرده اند. ما باید مدل را بر روی داده های تاریخی آموزش دهیم، اما همچنین باید آن را در زمان واقعی روی داده های ورودی جدید اعمال کنیم تا فرآیندهای تجاری ما بتوانند بر اساس پیش بینی های مدل عمل کنند.

ML Toolkit مجموعه ای از ابزارهایی است که هدف آن انجام این کار است: یکپارچه سازی مدل ها و یک محیط تراکنشی به طوری که مدل های ساخته شده به راحتی می توانند به طور مستقیم در فرآیندهای تجاری شما استفاده شوند. Python Gateway بخشی از ML Toolkit است و ادغام با زبان Python را فراهم می کند (مشابه R Gateway که بخشی از ML Toolkit با زبان R یکپارچه می شود).

ابزارها

قبل از ادامه، می خواهم چند ابزار و کتابخانه پایتون را توضیح دهم که بعداً از آنها استفاده خواهیم کرد.

تکنولوژی

  • پایتون یک زبان برنامه نویسی تفسیر شده، سطح بالا و همه منظوره است. مزیت اصلی این زبان کتابخانه بزرگ آن از کتابخانه های ریاضی، ML و AI است. مانند ObjectScript، این یک زبان شی گرا است، اما همه چیز به جای اینکه به صورت ایستا باشد، به صورت پویا تعریف می شود. همچنین همه چیز یک شی است. مقالات بعدی آشنایی گذرا با این زبان را فرض می کنند. اگر می خواهید شروع به یادگیری کنید، توصیه می کنم با آن شروع کنید مستندات.
  • برای تمرینات بعدی ما، تنظیم کنید پایتون 3.6.7 64 بیتی.
  • IDE: من استفاده می کنم PyCharm، اما به طور کلی آنها много. اگر از Atelier استفاده می کنید، یک پلاگین Eclipse برای توسعه دهندگان پایتون وجود دارد. اگر از VS Code استفاده می کنید، پسوندی برای پایتون وجود دارد.
  • نوت بوک: به جای IDE، می توانید اسکریپت های خود را در نوت بوک های آنلاین بنویسید و به اشتراک بگذارید. محبوب ترین آنها است ژوپیتر.

کتابخانه ها

در اینجا یک لیست (غیر جامع) از کتابخانه های یادگیری ماشین آمده است:

  • نازک - یک بسته اساسی برای محاسبات دقیق.
  • پانداها - ساختارهای داده با کارایی بالا و ابزارهای تجزیه و تحلیل داده.
  • matplotlib - ایجاد نمودار
  • سیبرن - تجسم داده ها بر اساس matplotlib.
  • چلیکون - روش های یادگیری ماشینی
  • XGBoost - الگوریتم های یادگیری ماشین در چارچوب روش تقویت گرادیان.
  • جنسیم - NLP.
  • کراس - شبکه های عصبی.
  • جریان تنسور - پلتفرمی برای ایجاد مدل های یادگیری ماشینی.
  • PyTorch پلتفرمی برای ایجاد مدل های یادگیری ماشینی است که بر پایتون متمرکز شده است.
  • نیوکا - PMML از مدل های مختلف.

فناوری های AI/ML کسب و کار را کارآمدتر و سازگارتر می کند. علاوه بر این، امروزه توسعه و پیاده سازی این فناوری ها آسان تر شده است. شروع به یادگیری در مورد فن آوری های AI/ML کنید و اینکه چگونه آنها می توانند به رشد سازمان شما کمک کنند.

نصب

چندین راه برای نصب و استفاده از Python Gateway وجود دارد:

  • سیستم عامل
    • ویندوز
    • لینـوکــس
    • مک
  • کارگر بارانداز
    • از یک تصویر از DockerHub استفاده کنید
    • ظاهر خود را ایجاد کنید

صرف نظر از روش نصب، به کد منبع نیاز دارید. تنها جایی که می توان کد را دانلود کرد صفحه انتشارات. این شامل نسخه‌های پایدار آزمایش‌شده است، فقط آخرین نسخه را بگیرید. در حال حاضر 0.8 است، اما به مرور زمان موارد جدید وجود خواهد داشت. مخزن را شبیه سازی/دانلود نکنید، آخرین نسخه را دانلود کنید.

سیستم عامل

اگر در حال نصب Python Gateway بر روی یک سیستم عامل هستید، ابتدا (صرف نظر از سیستم عامل) باید پایتون را نصب کنید. برای این:

  1. پایتون 3.6.7 64 بیتی را نصب کنید. توصیه می شود پایتون را در دایرکتوری پیش فرض نصب کنید.
  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().

ویندوز

  1. از متغیر محیط اطمینان حاصل کنید PYTHONHOME به پایتون 3.6.7 اشاره می کند.
  2. مطمئن شوید که متغیر محیطی سیستم است PATH شامل یک متغیر است PYTHONHOME (یا دایرکتوری که به آن اشاره می کند).

لینوکس (دبیان/اوبونتو)

  1. بررسی کنید که متغیر محیطی باشد PATH حاوی /usr/lib и /usr/lib/x86_64-linux-gnu. از فایل استفاده کنید /etc/environment برای تنظیم متغیرهای محیطی
  2. در صورت بروز خطا undefined symbol: _Py_TrueStruct تنظیم را تنظیم کنید PythonLib. همچنین در Readme یک بخش عیب یابی وجود دارد.

مک

  1. در حال حاضر فقط پایتون 3.6.7 پشتیبانی می شود python.org. متغیر را بررسی کنید PATH.

اگر متغیرهای محیط را تغییر دادید، محصول InterSystems خود را مجددا راه اندازی کنید.

کارگر بارانداز

استفاده از ظروف دارای چندین مزیت است:

  • قابل حمل بودن
  • اثربخشی
  • عایق
  • سبکی
  • تغییرناپذیری

این رو چک کن سری مقالات برای اطلاعات بیشتر در مورد استفاده از Docker با محصولات InterSystems.

تمام ساخت‌های دروازه پایتون در حال حاضر مبتنی بر کانتینر هستند 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 را اجرا کنید:

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.

تایید نصب

هنگامی که دروازه پایتون را نصب کردید، ارزش بررسی عملکرد آن را دارد. این کد را در ترمینال 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 خالی، بررسی کنید Readme - بخش عیب یابی.

API

Python Gateway نصب شده است و شما تأیید کرده اید که کار می کند. زمان شروع استفاده از آن است!
رابط اصلی پایتون است isc.py.Main. این گروه‌های متدهای زیر را ارائه می‌دهد (همه بازگشت %Status):

  • اجرای کد
  • انتقال داده
  • شرکت تابعه

اجرای کد

این روش ها به شما امکان می دهند کد پایتون دلخواه را اجرا کنید.

SimpleString

SimpleString - این روش اصلی است. 4 آرگومان اختیاری می گیرد:

  • code - خط کد برای اجرا کاراکتر فید خط: $c(10).
  • returnVariable - نام متغیری که باید برگردانده شود.
  • serialization - نحوه سریال سازی returnVariable. 0 - رشته (پیش فرض)، 1 - تکرار.
  • result - مرجع ByRef به متغیری که مقدار در آن نوشته شده است returnVariable.

در بالا انجام دادیم:

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

در این مثال به یک متغیر پایتون اختصاص می دهیم x ارزش Hello و می خواهید مقدار یک متغیر پایتون را برگردانید x به یک متغیر ObjectScript var.

ExecuteCode

ExecuteCode یک جایگزین امن تر و کمتر محدود کننده است SimpleString.
خطوط در پلتفرم InterSystems IRIS به 3 کاراکتر محدود شده‌اند و اگر می‌خواهید کد طولانی‌تری را اجرا کنید، باید از رشته‌ها استفاده کنید.
دو استدلال پذیرفته شده است:

  • code - یک خط یا جریانی از کد پایتون که باید اجرا شود.
  • variable - (اختیاری) نتیجه اجرا را اختصاص می دهد code این متغیر پایتون

مثال برای استفاده:

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

در این مثال 2 را در 3 ضرب می کنیم و نتیجه را روی یک متغیر پایتون می نویسیم y.

انتقال داده

انتقال داده به پایتون و از آن

Python -> InterSystems IRIS

4 روش برای بدست آوردن مقدار متغیر پایتون در InterSystems IRIS بسته به سریال سازی مورد نیاز شما وجود دارد:

  • String برای انواع داده های ساده و اشکال زدایی.
  • Repr برای ذخیره اشیاء ساده و اشکال زدایی.
  • JSON برای دستکاری آسان داده ها در سمت InterSystems IRIS.
  • Pickle برای ذخیره اشیا

این روش ها به شما امکان می دهند متغیرها را از پایتون به صورت رشته یا جریان بازیابی کنید.

  • 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 در پایتون.

  • ExecuteQuery(query, variable, type, namespace) - ایجاد یک مجموعه داده (pandas dataframe یا list) از کوئری sql و آن را روی یک متغیر پایتون تنظیم می کند 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 به پایتون ارسال می شود). با این حال، ExecuteGlobal و لفاف های آن ExecuteClass и ExecuteTable با تعدادی محدودیت کار کنید آنها بسیار سریعتر هستند (3-5 برابر سریعتر از درایور ODBC و 20 برابر سریعتر). ExecuteQuery). اطلاعات بیشتر در اسناد انتقال داده.
همه این روش ها از انتقال داده ها از هر منطقه پشتیبانی می کنند. کیسه پلاستیکی isc.py باید در منطقه مورد نظر در دسترس باشد.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - انتقال نتایج هر کوئری صحیح SQL به پایتون. این کندترین روش انتقال داده است. از آن استفاده کنید اگر ExecuteGlobal و لفاف آن موجود نیست.

استدلال:

  • query - پرس و جو sql.
  • variable - نام متغیر پایتون که داده ها در آن نوشته شده است.
  • type - list یا پانداها dataframe.
  • namespace - منطقه ای که درخواست در آن اجرا خواهد شد.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - گذراندن یک global در پایتون.

استدلال:

  • global - نام جهانی بدون ^
  • variable - نام متغیر پایتون که داده ها در آن نوشته شده است.
  • type - list یا پانداها dataframe.
  • start - اولین زیرنویس جهانی. لزوما %Integer.
  • end - آخرین زیرنویس جهانی. لزوما %Integer.
  • mask - ماسک ارزش جهانی ماسک می تواند کوتاهتر از تعداد فیلدهای جهانی باشد (در این صورت فیلدهای انتهایی نادیده گرفته می شوند). نحوه فرمت کردن ماسک:
    • + مقدار را همانطور که هست منتقل کنید
    • - رد شدن از ارزش
    • b - نوع بولی (0 - False، همه بقیه - True).
    • d - تاریخ (از $horolog، در ویندوز از 1970، در لینوکس از 1900).
    • t - زمان ($horolog، ثانیه پس از نیمه شب).
    • m - مُهر زمان (رشته فرمت سال-ماه-روز ساعت: MINUTE:SECOND).
  • 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برای انتقال داده خارج از این محدوده یا استفاده از پاندای دیتا فریم زیرا این یک محدودیت فقط لیست است.
  • برای 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() - آخرین استثنا در سمت پایتون را دریافت و حذف کنید.
  • GetModuleInfo(module, .imported, .alias) - دریافت متغیر ماژول و وضعیت واردات.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - اطلاعاتی در مورد عملکرد دریافت کنید.

قابلیت همکاری

شما یاد گرفتید که چگونه از ترمینال پایتون را فراخوانی کنید، حالا بیایید شروع به استفاده از آن در تولید کنیم. اساس تعامل با پایتون در این حالت است isc.py.ens.Operation. به ما اجازه می دهد:

  • اجرای کد در پایتون
  • ذخیره/بازیابی زمینه پایتون
  • بارگیری و دریافت داده ها از پایتون

اساساً، یک عملیات پایتون یک wrapper over است isc.py.Main. عمل isc.py.ens.Operation توانایی تعامل با فرآیند پایتون را از محصولات 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 - (فقط لینوکس) اگر هنگام بارگذاری خطا مشاهده کردید، مقدار آن را روی آن قرار دهید libpython3.6m.so یا حتی در مسیر کامل کتابخانه پایتون.

ایجاد فرآیندهای تجاری

دو کلاس موجود است که توسعه فرآیندهای تجاری را تسهیل می کند:

  • isc.py.ens.ProcessUtils به شما امکان می دهد حاشیه نویسی را از فعالیت ها با جایگزینی متغیر استخراج کنید.
  • isc.py.util.BPEmulator آزمایش فرآیندهای تجاری با پایتون را آسان می کند. می تواند یک فرآیند تجاری (قطعات پایتون) را در فرآیند فعلی اجرا کند.

جایگزینی متغیر

تمام فرآیندهای کسب و کار به ارث رسیده از isc.py.ens.ProcessUtils، می تواند از روش استفاده کند GetAnnotation(name) برای دریافت مقدار حاشیه نویسی فعالیت با نام آن. حاشیه نویسی فعالیت می تواند حاوی متغیرهایی باشد که قبل از ارسال به پایتون در سمت 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.

تست فرآیند کسب و کار

محصولات آزمایشی و فرآیندهای تجاری آزمایشی به طور پیش فرض به عنوان بخشی از دروازه پایتون در دسترس هستند. برای استفاده از آنها:

  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

اجرای کد

مهمترین چالش اجرای کد پایتون است:

دروازه پایتون در 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 ممکن است برای به دست آوردن اسکریپت های چند خطی پایتون مفید باشد، اما هیچ محدودیتی در این روش برای دریافت کد وجود ندارد. می توانید ملک را تنظیم کنید Code به هر نحوی که برای شما مناسب باشد.

دریافت متغیرها

یکی دیگر از چالش های جالب استفاده از isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

دروازه پایتون در InterSystems IRIS

ماتریس همبستگی را در سمت پایتون محاسبه می کند و متغیر را استخراج می کند corrmat با تنظیم خصوصیات درخواست به InterSystems IRIS در قالب JSON برگردید:

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

ما می توانیم نتایج را در Visual Trace ببینیم:

دروازه پایتون در 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 در عمل نشان داده شده است.

دروازه پایتون در InterSystems IRIS

ذخیره/بازیابی متن پایتون

در نهایت، ما می توانیم زمینه پایتون را در 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 در پایتون بارگیری می کند:

  • ContextId - شناسه زمینه
  • Clear - قبل از بازیابی، زمینه را پاک کنید.

نوت بوک ژوپیتر

نوت بوک ژوپیتر یک برنامه وب منبع باز است که به شما امکان می دهد نوت بوک هایی حاوی کد، تجسم و متن ایجاد و منتشر کنید. Python Gateway به شما اجازه می دهد تا فرآیندهای BPL را در قالب یک نوت بوک Jupyter مشاهده و ویرایش کنید. لطفاً توجه داشته باشید که در حال حاضر از مجری عادی پایتون 3 استفاده می شود.

این پسوند فرض می‌کند که حاشیه‌نویسی‌ها حاوی کد پایتون هستند و از نام‌های فعالیت به عنوان عناوین قبلی استفاده می‌کنند. اکنون امکان توسعه فرآیندهای تجاری PythonGateway در Jupyter Notebook وجود دارد. در اینجا چیزی است که ممکن است:

  • فرآیندهای تجاری جدید ایجاد کنید
  • فرآیندهای تجاری را حذف کنید
  • فعالیت های جدید ایجاد کنید
  • تغییر فعالیت ها
  • حذف فعالیت ها

در اینجا این است ویدئوی نمایشی. و چند تا اسکرین شات:

Process Explorer

دروازه پایتون در InterSystems IRIS

ویرایشگر فرآیند

دروازه پایتون در InterSystems IRIS

نصب

  1. شما به InterSystems IRIS 2019.2+ نیاز دارید.
  2. PythonGateway نسخه 0.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 است و با زبان پایتون ادغام می شود و به شما امکان می دهد هر الگوریتم یادگیری ماشینی ایجاد شده در پایتون (محیط اصلی بسیاری از دانشمندان داده) را هماهنگ کنید، از کتابخانه های آماده متعدد برای ایجاد سریع هوش مصنوعی تحلیلی تطبیقی ​​و روباتیک استفاده کنید. راه حل های ML در پلت فرم InterSystems IRIS.

مراجع

MLToolkit

گروه کاربری MLToolkit یک مخزن خصوصی GitHub است که به عنوان بخشی از سازمان GitHub شرکتی InterSystems ایجاد شده است. این برای کاربران خارجی که نصب، یادگیری، یا در حال استفاده از اجزای MLToolkit، از جمله دروازه Python در نظر گرفته شده است. این گروه دارای تعدادی مورد پیاده سازی شده (با کد منبع و داده های آزمایشی) در زمینه های بازاریابی، تولیدی، پزشکی و بسیاری از صنایع دیگر می باشد. برای پیوستن به گروه کاربری ML Toolkit، لطفاً یک ایمیل کوتاه به آدرس زیر ارسال کنید: [ایمیل محافظت شده] و اطلاعات زیر را در نامه خود بگنجانید:

  • نام کاربری GitHub
  • سازمان (شما کار می کنید یا تحصیل می کنید)
  • موقعیت (موقعیت واقعی شما در سازمانتان، "دانشجو" یا "مستقل").
  • کشور

برای کسانی که مقاله را خوانده‌اند و به قابلیت‌های InterSystems IRIS به‌عنوان بستری برای توسعه یا میزبانی موتورهای هوش مصنوعی و یادگیری ماشین علاقه‌مند هستند، از شما دعوت می‌کنیم تا در مورد سناریوهای احتمالی مورد علاقه شرکت خود صحبت کنید. ما خوشحال خواهیم شد که نیازهای شرکت شما را تجزیه و تحلیل کنیم و به طور مشترک یک برنامه اقدام را تعیین کنیم. آدرس ایمیل تماس با تیم متخصص AI/ML ما – [ایمیل محافظت شده].

منبع: www.habr.com

اضافه کردن نظر