Python Gateway ื‘-InterSystems IRIS

ืžืืžืจ ื–ื” ืขื•ืกืง ื‘-Python Gateway, ืคืจื•ื™ืงื˜ ืงื”ื™ืœืชื™ ื‘ืงื•ื“ ืคืชื•ื— ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžืช ื”ื ืชื•ื ื™ื InterSystems IRIS. ืคืจื•ื™ืงื˜ ื–ื” ืžืืคืฉืจ ืœืš ืœืชื–ืžืจ ื›ืœ ืืœื’ื•ืจื™ืชืžื™ ืœืžื™ื“ืช ืžื›ื•ื ื” ืฉื ื•ืฆืจื• ื‘-Python (ื”ืกื‘ื™ื‘ื” ื”ืขื™ืงืจื™ืช ืขื‘ื•ืจ ืžื“ืขื ื™ ื ืชื•ื ื™ื ืจื‘ื™ื), ืœื”ืฉืชืžืฉ ื‘ืžืกืคืจ ืจื‘ ืฉืœ ืกืคืจื™ื•ืช ืžื•ื›ื ื•ืช ื›ื“ื™ ืœื™ืฆื•ืจ ื‘ืžื”ื™ืจื•ืช ืคืชืจื•ื ื•ืช AI/ML ืื ืœื™ื˜ื™ื™ื ืžืกืชื’ืœื™ื ืจื•ื‘ื•ื˜ื™ื™ื ื‘ืคืœื˜ืคื•ืจืžืช InterSystems IRIS. ื‘ืžืืžืจ ื–ื”, ืื ื™ ืืจืื” ืœืš ื›ื™ืฆื“ InterSystems IRIS ื™ื›ื•ืœื” ืœืชื–ืžืŸ ืชื”ืœื™ื›ื™ Python, ืœื‘ืฆืข ื”ืขื‘ืจืช ื ืชื•ื ื™ื ื“ื•-ื›ื™ื•ื•ื ื™ืช ื™ืขื™ืœื” ื•ืœื™ืฆื•ืจ ืชื”ืœื™ื›ื™ื ืขืกืงื™ื™ื ื—ื›ืžื™ื.

ืชื›ื ื™ืช

  1. ืžื‘ื•ื.
  2. ื›ืœื™ื.
  3. ื”ืชืงื ื”
  4. ื”-API.
  5. ื™ื›ื•ืœืช ืคืขื•ืœื” ื”ื“ื“ื™ืช.
  6. ืžื—ื‘ืจืช Jupyter.
  7. ืžืกืงื ื•ืช.
  8. ืงื™ืฉื•ืจื™ื.
  9. M.L.Toolkit.

ืžื‘ื•ื

Python ื”ื™ื ืฉืคืช ืชื›ื ื•ืช ื‘ืจืžื” ื’ื‘ื•ื”ื” ืขื ืžื˜ืจื” ื›ืœืœื™ืช ื”ืžืชืžืงื“ืช ื‘ืฉื™ืคื•ืจ ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช ืžืคืชื—ื™ื ื•ืงืจื™ืื•ืช ืงื•ื“. ื‘ืกื“ืจืช ืžืืžืจื™ื ื–ื•, ืื“ื‘ืจ ืขืœ ืืคืฉืจื•ื™ื•ืช ื”ืฉื™ืžื•ืฉ ื‘ืฉืคืช Python ื‘ืคืœื˜ืคื•ืจืžืช InterSystems IRIS, ื›ืืฉืจ ื”ืžื•ืงื“ ื”ืขื™ืงืจื™ ืฉืœ ืžืืžืจ ื–ื” ื”ื•ื ื”ืฉื™ืžื•ืฉ ื‘- Python ื›ืฉืคื” ืœื™ืฆื™ืจื” ื•ื™ื™ืฉื•ื ืžื•ื“ืœื™ื ืฉืœ ืœืžื™ื“ืช ืžื›ื•ื ื”.

ืœืžื™ื“ืช ืžื›ื•ื ื” (ML) ื”ื™ื ืžื—ืœืงื” ืฉืœ ืฉื™ื˜ื•ืช ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช, ืฉื”ืชื›ื•ื ื” ื”ืื•ืคื™ื™ื ื™ืช ืœื”ืŸ ืื™ื ื” ืคืชืจื•ืŸ ื™ืฉื™ืจ ืฉืœ ื‘ืขื™ื”, ืืœื ืœืžื™ื“ื” ื‘ืชื”ืœื™ืš ืฉืœ ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื“ื•ืžื•ืช ืจื‘ื•ืช.

ืืœื’ื•ืจื™ืชืžื™ื ื•ืžื•ื“ืœื™ื ืฉืœ ืœืžื™ื“ืช ืžื›ื•ื ื” ื”ื•ืคื›ื™ื ื ืคื•ืฆื™ื ื™ื•ืชืจ ื•ื™ื•ืชืจ. ื™ืฉ ืœื›ืš ืกื™ื‘ื•ืช ืจื‘ื•ืช, ืื‘ืœ ื”ื›ืœ ืžืกืชื›ื ื‘ื ื’ื™ืฉื•ืช, ืคืฉื˜ื•ืช ื•ื”ืฉื’ืช ืชื•ืฆืื•ืช ืžืขืฉื™ื•ืช. ื”ืื ื™ืฆื™ืจืช ืžื•ื“ืœื™ื ืฉืœ ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช ืื• ืืคื™ืœื• ืจืฉืชื•ืช ืขืฆื‘ื™ื ื”ืŸ ื˜ื›ื ื•ืœื•ื’ื™ื” ื—ื“ืฉื”?

ื›ืžื•ื‘ืŸ ืฉืœื, ืื‘ืœ ื›ื™ื•ื ืื™ืŸ ืฆื•ืจืš ืœื›ืชื•ื‘ ืžืื•ืช ืืœืคื™ ืฉื•ืจื•ืช ืงื•ื“ ื›ื“ื™ ืœื”ืคืขื™ืœ ืžื•ื“ืœ ืื—ื“, ื•ืขืœื•ื™ื•ืช ื”ื™ืฆื™ืจื” ื•ื”ื™ื™ืฉื•ื ืฉืœ ืžื•ื“ืœื™ื ื”ื•ืœื›ื•ืช ื•ืงื˜ื ื•ืช.

ื”ื›ืœื™ื ืžืชืคืชื—ื™ื - ื‘ืขื•ื“ ืฉืื™ืŸ ืœื ื• ื›ืœื™ื AI/ML ืžื•ื›ื•ื•ื ื™ GUI ืœื—ืœื•ื˜ื™ืŸ, ื ื™ื›ืจืช ื’ื ื”ื”ืชืงื“ืžื•ืช ืฉืจืื™ื ื• ืขื ืžื—ืœืงื•ืช ืจื‘ื•ืช ืื—ืจื•ืช ืฉืœ ืžืขืจื›ื•ืช ืžื™ื“ืข ื›ืžื• BI (ืžื›ืชื™ื‘ืช ืงื•ื“ ืœืฉื™ืžื•ืฉ ื‘ืžืกื’ืจื•ืช ื•ืคืชืจื•ื ื•ืช ื ื™ืชื ื™ื ืœื”ื’ื“ืจื” ืžื•ื›ื•ื•ื ื™ GUI) . ื‘ื›ืœื™ื ืœื™ืฆื™ืจืช AI/ML. ื›ื‘ืจ ืขื‘ืจื ื• ืืช ืฉืœื‘ ื›ืชื™ื‘ืช ื”ืงื•ื“ ื•ื›ื™ื•ื ืื ื• ืžืฉืชืžืฉื™ื ื‘ืžืกื’ืจื•ืช ืœื‘ื ื™ื™ืช ื•ื”ื“ืจื›ื” ืฉืœ ืžื•ื“ืœื™ื.

ืฉื™ืคื•ืจื™ื ืื—ืจื™ื, ื›ืžื• ื”ื™ื›ื•ืœืช ืœื”ืคื™ืฅ ืžื•ื“ืœ ืฉื”ื•ื›ืฉืจ ืžืจืืฉ ืฉื‘ื• ืžืฉืชืžืฉ ื”ืงืฆื” ืฆืจื™ืš ืคืฉื•ื˜ ืœืกื™ื™ื ืืช ืื™ืžื•ืŸ ื”ืžื•ื“ืœ ืขืœ ื”ื ืชื•ื ื™ื ื”ืกืคืฆื™ืคื™ื™ื ืฉืœื•, ื’ื ืžืงืœื™ื ืขืœ ื”ืชื—ืœืช ื™ื™ืฉื•ื ืœืžื™ื“ืช ืžื›ื•ื ื”. ื”ื”ืชืงื“ืžื•ืช ื”ืœืœื• ืžืงืœื” ื‘ื”ืจื‘ื” ืขืœ ืœื™ืžื•ื“ ืœืžื™ื“ืช ืžื›ื•ื ื”, ื”ืŸ ืขื‘ื•ืจ ืื ืฉื™ ืžืงืฆื•ืข ื•ื”ืŸ ืขื‘ื•ืจ ื—ื‘ืจื•ืช ื›ื•ืœื”.

ืžืฆื“ ืฉื ื™, ืื ื—ื ื• ืื•ืกืคื™ื ื™ื•ืชืจ ื•ื™ื•ืชืจ ื ืชื•ื ื™ื. ืขื ืคืœื˜ืคื•ืจืžืช ื ืชื•ื ื™ื ืžืื•ื—ื“ืช ื›ืžื• InterSystems IRIS, ื ื™ืชืŸ ืœื”ื›ื™ืŸ ืืช ื›ืœ ื”ืžื™ื“ืข ื”ื–ื” ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ื•ืœื”ืฉืชืžืฉ ื‘ื• ื›ืงืœื˜ ืขื‘ื•ืจ ืžื•ื“ืœื™ื ืฉืœ ืœืžื™ื“ืช ืžื›ื•ื ื”.

ืขื ื”ืžืขื‘ืจ ืœืขื ืŸ, ื”ืฉืงืช ืคืจื•ื™ืงื˜ื™ AI/ML ืงืœื” ืžืื™ ืคืขื. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืฆืจื•ืš ืจืง ืืช ื”ืžืฉืื‘ื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื. ื™ืชืจื” ืžื›ืš, ื”ื•ื“ื•ืช ืœื”ืงื‘ืœื” ืฉืžืฆื™ืขื•ืช ืคืœื˜ืคื•ืจืžื•ืช ืขื ืŸ, ืื ื• ื™ื›ื•ืœื™ื ืœื—ืกื•ืš ื‘ื–ื‘ื•ื– ื–ืžืŸ.

ืื‘ืœ ืžื” ืœื’ื‘ื™ ืชื•ืฆืื•ืช? ื›ืืŸ ื”ื“ื‘ืจื™ื ืžืกืชื‘ื›ื™ื ื™ื•ืชืจ. ื™ืฉื ื ื›ืœื™ื ืจื‘ื™ื ืœื‘ื ื™ื™ืช ืžื•ื“ืœื™ื, ืขืœื™ื”ื ืื“ื•ืŸ ื‘ื”ืžืฉืš. ืœื ืงืœ ืœื‘ื ื•ืช ืžื•ื“ืœ ื˜ื•ื‘, ืื‘ืœ ืžื” ื”ืœืื”? ืœื”ืจื•ื•ื™ื— ืžื”ืฉื™ืžื•ืฉ ื‘ืžื•ื“ืœ ืขืœ ื™ื“ื™ ืขืกืง ื”ื™ื ื’ื ืžืฉื™ืžื” ืœื ื˜ืจื™ื•ื•ื™ืืœื™ืช. ืฉื•ืจืฉ ื”ื‘ืขื™ื” ื”ื•ื ื”ื”ืคืจื“ื” ื‘ื™ืŸ ืขื•ืžืกื™ ืขื‘ื•ื“ื” ืื ืœื™ื˜ื™ื™ื ืœื˜ืจื ื–ืงืฆื™ื•ืช ื•ืžื•ื“ืœื™ื ืฉืœ ื ืชื•ื ื™ื. ื›ืืฉืจ ืื ื• ืžืืžื ื™ื ืžื•ื“ืœ, ืื ื• ื‘ื“ืจืš ื›ืœืœ ืขื•ืฉื™ื ื–ืืช ืขืœ ืกืžืš ื ืชื•ื ื™ื ื”ื™ืกื˜ื•ืจื™ื™ื. ืื‘ืœ ื”ืžืงื•ื ืœืžื•ื“ืœ ืฉื ื‘ื ื” ื”ื•ื ื‘ืขื™ื‘ื•ื“ ื ืชื•ื ื™ื ืขืกืงื”. ืžื” ื”ืžื•ื“ืœ ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืœื–ื™ื”ื•ื™ ืขืกืงืื•ืช ื”ื•ื ืื” ืื โ€‹โ€‹ื ืจื™ืฅ ืื•ืชื• ืคืขื ื‘ื™ื•ื? ื”ืจืžืื™ื ื›ื‘ืจ ื™ืฆืื• ืขื ื”ื›ืกืฃ. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื›ืฉื™ืจ ืืช ื”ืžื•ื“ืœ ืขืœ ื ืชื•ื ื™ื ื”ื™ืกื˜ื•ืจื™ื™ื, ืื‘ืœ ืื ื—ื ื• ืฆืจื™ื›ื™ื ื’ื ืœื™ื™ืฉื ืื•ืชื• ื‘ื–ืžืŸ ืืžืช ืขืœ ื ืชื•ื ื™ื ื ื›ื ืกื™ื ื—ื“ืฉื™ื ื›ื“ื™ ืฉื”ืชื”ืœื™ื›ื™ื ื”ืขืกืงื™ื™ื ืฉืœื ื• ื™ื•ื›ืœื• ืœืคืขื•ืœ ืขืœ ืคื™ ื”ืชื—ื–ื™ื•ืช ืฉืžื‘ื•ืฆืขื•ืช ืขืœ ื™ื“ื™ ื”ืžื•ื“ืœ.

ML Toolkit ื”ื•ื ืขืจื›ืช ื›ืœื™ื ืฉืขื•ืฉื” ื‘ื“ื™ื•ืง ืืช ื–ื”: ืžืงืจื‘ ืžื•ื“ืœื™ื ื•ืกื‘ื™ื‘ื” ืขืกืงื” ื›ืš ืฉื ื™ืชืŸ ื™ื”ื™ื” ืœื”ืฉืชืžืฉ ื‘ืงืœื•ืช ื‘ืžื•ื“ืœื™ื ืฉืืชื” ื‘ื•ื ื” ื™ืฉื™ืจื•ืช ื‘ืชื”ืœื™ื›ื™ื ื”ืขืกืงื™ื™ื ืฉืœืš. Python Gateway ื”ื•ื ื—ืœืง ืž-ML Toolkit ื•ืžืกืคืง ืื™ื ื˜ื’ืจืฆื™ื” ืขื ืฉืคืช Python (ื‘ื“ื•ืžื” ืœ-R Gateway, ื”ื™ื•ืชื• ื—ืœืง ืž-ML Toolkit ืžืกืคืง ืื™ื ื˜ื’ืจืฆื™ื” ืขื ืฉืคืช R).

ืขืจื›ืช ื›ืœื™ื

ืœืคื ื™ ืฉื ืžืฉื™ืš, ื‘ืจืฆื•ื ื™ ืœืชืืจ ื›ืžื” ื›ืœื™ื ื•ืกืคืจื™ื•ืช ืฉืœ Python ืฉื ืฉืชืžืฉ ื‘ื”ื ืžืื•ื—ืจ ื™ื•ืชืจ.

ื˜ื›ื ื•ืœื•ื’ื™ื”

  • Python ื”ื™ื ืฉืคืช ืชื›ื ื•ืช ืžืคื•ืจืฉืช, ืœืฉื™ืžื•ืฉ ื›ืœืœื™, ื‘ืจืžื” ื’ื‘ื•ื”ื”. ื”ื™ืชืจื•ืŸ ื”ืขื™ืงืจื™ ืฉืœ ื”ืฉืคื” ื”ื•ื ืกืคืจื™ื™ื” ื’ื“ื•ืœื” ืฉืœ ืกืคืจื™ื•ืช ืžืชืžื˜ื™ื•ืช, ML ื•-AI. ื›ืžื• ObjectScript, ื–ื• ืฉืคื” ืžื•ื ื—ื” ืขืฆืžื™ื, ืื‘ืœ ื”ื›ืœ ืžื•ื’ื“ืจ ื‘ืื•ืคืŸ ื“ื™ื ืžื™, ืœื ืกื˜ื˜ื™. ื’ื ื”ื›ืœ ื”ื•ื ื—ืคืฅ. ืžืืžืจื™ื ืžืื•ื—ืจื™ื ื™ื•ืชืจ ืžื ื™ื—ื™ื ื”ื™ื›ืจื•ืช ื—ื•ืœืคืช ืขื ื”ืฉืคื”. ืื ืืชื” ืจื•ืฆื” ืœื”ืชื—ื™ืœ ืœืœืžื•ื“, ืื ื™ ืžืžืœื™ืฅ ืœื”ืชื—ื™ืœ ืขื ืชื™ืขื•ื“.
  • ืœืชืจื’ื™ืœื™ื ื”ื‘ืื™ื ืฉืœื ื•, ื”ื’ื“ืจ Python 3.6.7 64 ืกื™ื‘ื™ื•ืช.
  • IDE: ืื ื™ ืžืฉืชืžืฉ ืคื™ืืฆ 'ืจื, ืื‘ืœ ื‘ืื•ืคืŸ ื›ืœืœื™ ะผะฝะพะณะพ. ืื ืืชื” ืžืฉืชืžืฉ ื‘-Atelier, ื™ืฉ ืชื•ืกืฃ Eclipse ืœืžืคืชื—ื™ Python. ืื ืืชื” ืžืฉืชืžืฉ ื‘ืงื•ื“ VS, ืื– ื™ืฉ ื”ืจื—ื‘ื” ืขื‘ื•ืจ Python.
  • ืžื—ื‘ืจืช: ื‘ืžืงื•ื IDE, ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ื•ืœืฉืชืฃ ืืช ื”ืกืงืจื™ืคื˜ื™ื ืฉืœืš ื‘ืžื—ื‘ืจื•ืช ืžืงื•ื•ื ื•ืช. ื”ืคื•ืคื•ืœืจื™ ืฉื‘ื”ื ื”ื•ื ื™ื•ืคื™ื˜ืจ.

ืกืคืจื™ื•ืช

ื”ื ื” ืจืฉื™ืžื” (ื—ืœืงื™ืช) ืฉืœ ืกืคืจื™ื•ืช ืœืžื™ื“ืช ืžื›ื•ื ื”:

  • ืžื˜ื•ืžื˜ื - ื—ื‘ื™ืœื” ื‘ืกื™ืกื™ืช ืœื—ื™ืฉื•ื‘ื™ื ืžื“ื•ื™ืงื™ื.
  • ืคื ื“ื•ืช - ืžื‘ื ื™ ื ืชื•ื ื™ื ื‘ืขืœื™ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื•ื›ืœื™ ื ื™ืชื•ื— ื ืชื•ื ื™ื.
  • ืžื˜ืคืœื•ื˜ืœื™ื‘ - ื™ืฆื™ืจืช ืชืจืฉื™ืžื™ื.
  • ื™ื•ื‘ืœ ื™ื - ื”ื“ืžื™ื™ืช ื ืชื•ื ื™ื ื”ืžื‘ื•ืกืกืช ืขืœ matplotlib.
  • ืกืงืœืจืŸ - ืฉื™ื˜ื•ืช ืœืžื™ื“ืช ืžื›ื•ื ื”.
  • XGBoost - ืืœื’ื•ืจื™ืชืžื™ื ืฉืœ ืœืžื™ื“ืช ืžื›ื•ื ื” ื‘ืžืกื’ืจืช ืžืชื•ื“ื•ืœื•ื’ื™ื™ืช ื”- Gradient Boosting.
  • ื’ื ืกื™ื - NLP.
  • ืงืจืก - ืจืฉืชื•ืช ืขืฆื‘ื™ื•ืช.
  • ื–ืจื™ืžืช ืžืชื™ื—ื” ื”ื™ื ืคืœื˜ืคื•ืจืžื” ืœื™ืฆื™ืจืช ืžื•ื“ืœื™ื ืฉืœ ืœืžื™ื“ืช ืžื›ื•ื ื”.
  • PyTorch ื”ื™ื ืคืœื˜ืคื•ืจืžื” ืœื™ืฆื™ืจืช ืžื•ื“ืœื™ื ืฉืœ ืœืžื™ื“ืช ืžื›ื•ื ื” ื”ืžืชืžืงื“ื™ื ื‘-Python.
  • ื ื™ื•ืงื” - PMML ืžื“ื’ืžื™ื ืฉื•ื ื™ื.

ื˜ื›ื ื•ืœื•ื’ื™ื•ืช AI/ML ื”ื•ืคื›ื•ืช ืืช ื”ืขืกืง ืœื™ืขื™ืœ ื™ื•ืชืจ ื•ื ื™ืชืŸ ืœื”ืชืืžื”. ื™ืชืจื” ืžื›ืš, ื›ื™ื•ื ื”ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื”ืœืœื• ื”ื•ืคื›ื•ืช ืงืœื•ืช ื™ื•ืชืจ ืœืคื™ืชื•ื— ื•ื™ื™ืฉื•ื. ื”ืชื—ืœ ืœืœืžื•ื“ ืขืœ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช AI/ML ื•ื›ื™ืฆื“ ื”ืŸ ื™ื›ื•ืœื•ืช ืœืขื–ื•ืจ ืœืืจื’ื•ืŸ ืฉืœืš ืœืฆืžื•ื—.

ื”ืชืงื ื”

ื™ืฉื ืŸ ืžืกืคืจ ื“ืจื›ื™ื ืœื”ืชืงื™ืŸ ื•ืœื”ืฉืชืžืฉ ื‘- Python Gateway:

  • Less
    • Windows
    • ืœื™ื ื•ืงืก
    • Mac
  • ืกึทื•ึธืจ
    • ื”ืฉืชืžืฉ ื‘ืชืžื•ื ื” ืž- DockerHub
    • ืฆื•ืจ ืžืจืื” ืžืฉืœืš

ืœืœื ืงืฉืจ ืœืฉื™ื˜ืช ื”ื”ืชืงื ื”, ืชื–ื“ืงืง ืœืงื•ื“ ื”ืžืงื•ืจ. ื”ืžืงื•ื ื”ื™ื—ื™ื“ ืœื”ื•ืจื™ื“ ืืช ื”ืงื•ื“ ื”ื•ื ืขืžื•ื“ ืžืฉื—ืจืจ. ื”ื•ื ืžื›ื™ืœ ืžื”ื“ื•ืจื•ืช ื™ืฆื™ื‘ื•ืช ืฉื ื‘ื“ืงื•, ืคืฉื•ื˜ ืงื— ืืช ื”ืื—ืจื•ื ื”. ื›ืจื’ืข ื–ื” 0.8, ืื‘ืœ ืขื ื”ื–ืžืŸ ื™ื”ื™ื• ื—ื“ืฉื™ื. ืื™ืŸ ืœืฉื›ืคืœ/ืœื”ื•ืจื™ื“ ืืช ื”ืžืื’ืจ, ื”ื•ืจื“ ืืช ื”ืžื”ื“ื•ืจื” ื”ืื—ืจื•ื ื”.

Less

ืื ืืชื” ืžืชืงื™ืŸ ืืช 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 ืžืฆื‘ื™ืข ืขืœ ืคื™ื™ืชื•ืŸ 3.6.7.
  2. ื•ื“ื ืฉืžืฉืชื ื” ืกื‘ื™ื‘ืช ื”ืžืขืจื›ืช ื”ื•ื PATH ืžื›ื™ืœ ืžืฉืชื ื” PYTHONHOME (ืื• ื”ืกืคืจื™ื™ื” ืฉื”ื™ื ืžืคื ื” ืืœื™ื”).

ืœื™ื ื•ืงืก (ื“ื‘ื™ืืŸ/ืื•ื‘ื•ื ื˜ื•)

  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ืœื”ื•ืจื™ื“ ื•ืœื”ืคืขื™ืœ ืืช Python Gateway ืขื InterSystems IRIS Community Edition. ื–ื” ื”ื›ืœ.

ืฆื•ืจ ืžืจืื” ืžืฉืœืš

ื›ื“ื™ ืœื‘ื ื•ืช ืชืžื•ื ืช 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, ื›ื“ืื™ ืœื‘ื“ื•ืง ืฉื”ื•ื ืขื•ื‘ื“. ื”ืคืขืœ ืืช ื”ืงื•ื“ ื”ื–ื” ื‘ืžืกื•ืฃ IRIS ืฉืœ InterSystems:

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 - ืกืขื™ืฃ ืคืชืจื•ืŸ ื‘ืขื™ื•ืช.

API

Python Gateway ืžื•ืชืงืŸ ื•ืื™ืžืชืช ืฉื”ื•ื ืขื•ื‘ื“. ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ืชื—ื™ืœ ืœื”ืฉืชืžืฉ ื‘ื•!
ื”ืžืžืฉืง ื”ืขื™ืงืจื™ ืœืคื™ื™ืชื•ืŸ ื”ื•ื isc.py.Main. ื”ื•ื ืžืฆื™ืข ืืช ืงื‘ื•ืฆื•ืช ื”ืฉื™ื˜ื•ืช ื”ื‘ืื•ืช (ื›ื•ืœืŸ ื—ื•ื–ืจื•ืช %Status):

  • ื‘ื™ืฆื•ืข ืงื•ื“
  • ื”ืขื‘ืจืช ื ืชื•ื ื™ื
  • ืขื–ืจ

ื‘ื™ืฆื•ืข ืงื•ื“

ืฉื™ื˜ื•ืช ืืœื• ืžืืคืฉืจื•ืช ืœืš ืœื‘ืฆืข ืงื•ื“ Python ืฉืจื™ืจื•ืชื™.

SimpleString

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).

ื‘ื“ื•ื’ืžื” ื–ื•, ืื ื• ืžืงืฆื™ื ืœืžืฉืชื ื” Python x ะทะฝะฐั‡ะตะฝะธะต Hello ื•ืจื•ืฆื™ื ืœื”ื—ื–ื™ืจ ืืช ื”ืขืจืš ืฉืœ ืžืฉืชื ื” Python x ืœืžืฉืชื ื” ObjectScript var.

ExecuteCode

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 -> 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 ื‘-Python ื›ืžืฉืชื ื” ืกื•ื’ type: list, ืื• ืคื ื“ื•ืช dataframe. ืชื™ืื•ืจ ืฉืœ ืืจื’ื•ืžื ื˜ื™ื ืื•ืคืฆื™ื•ื ืœื™ื™ื mask ื• labels ื–ืžื™ืŸ ื‘ืชื™ืขื•ื“ ื”ืžื—ืœืงื” ื•ื‘ืžืื’ืจ ืžืกืžื›ื™ ื”ืขื‘ืจืช ื ืชื•ื ื™ื.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - ื˜ื•ืขืŸ ื ืชื•ื ื™ ื›ื™ืชื” class ืž-id start ะดะพ end ื‘-Python ื›ืžืฉืชื ื” ืกื•ื’ type: list, ืื• ืคื ื“ื•ืช dataframe. properties - ืจืฉื™ืžื” (ืžื•ืคืจื“ืช ื‘ืคืกื™ืง) ืฉืœ ืžืืคื™ื™ื ื™ ืžื—ืœืงื” ืฉื™ืฉ ืœื˜ืขื•ืŸ ืœืžืขืจืš ื”ื ืชื•ื ื™ื. ืžืกื›ื•ืช ื ืชืžื›ื•ืช * ะธ ?. ื‘ืจื™ืจืช ืžื—ื“ืœ - * (ื›ืœ ื”ื ื›ืกื™ื). ืชื›ื•ื ื” %%CLASSNAME ื”ืชืขืœืžื•.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - ื˜ื•ืขืŸ ื ืชื•ื ื™ ื˜ื‘ืœื” table ืž-id start ะดะพ end ื‘ืคื™ืชื•ืŸ.

ExecuteQuery - ืื•ื ื™ื‘ืจืกืœื™ (ื›ืœ ืฉืื™ืœืชืช SQL ื—ื•ืงื™ืช ืชื•ืขื‘ืจ ืœืคื™ื™ืชื•ืŸ). ืœืžืจื•ืช ื–ืืช, ExecuteGlobal ื•ื”ืขื˜ื™ืคื•ืช ืฉืœื• ExecuteClass ะธ ExecuteTable ืœืขื‘ื•ื“ ืขื ืžืกืคืจ ื”ื’ื‘ืœื•ืช. ื”ื ื”ืจื‘ื” ื™ื•ืชืจ ืžื”ื™ืจื™ื (ืคื™ 3-5 ืžื”ืจ ื™ื•ืชืจ ืžื”ื“ืจื™ื‘ืจ ืฉืœ ODBC ื•ืคื™ 20 ืžื”ืจ ื™ื•ืชืจ ืžืืฉืจ ExecuteQuery). ืžื™ื“ืข ื ื•ืกืฃ ื‘ ืžืกืžื›ื™ ื”ืขื‘ืจืช ื ืชื•ื ื™ื.
ื›ืœ ื”ืฉื™ื˜ื•ืช ื”ืœืœื• ืชื•ืžื›ื•ืช ื‘ื”ืขื‘ืจืช ื ืชื•ื ื™ื ืžื›ืœ ืื–ื•ืจ. ืฉืงื™ืช ืคืœืกื˜ื™ืง isc.py ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื–ืžื™ืŸ ื‘ืื–ื•ืจ ื”ื™ืขื“.

ืœื‘ืฆืข ืฉืื™ืœืชื”

ExecuteQuery(request, variable, type, namespace) - ื”ืขื‘ืจืช ื”ืชื•ืฆืื•ืช ืฉืœ ื›ืœ ืฉืื™ืœืชืช SQL ื—ื•ืงื™ืช ืœืคื™ื™ืชื•ืŸ. ื–ื•ื”ื™ ืฉื™ื˜ืช ื”ืขื‘ืจืช ื”ื ืชื•ื ื™ื ื”ืื™ื˜ื™ืช ื‘ื™ื•ืชืจ. ื”ืฉืชืžืฉ ื‘ื• ืื ExecuteGlobal ื•ื”ืขื˜ื™ืคื•ืช ืฉืœื• ืื™ื ืŸ ื–ืžื™ื ื•ืช.

ื˜ืขื ื•ืช:

  • query - ืฉืื™ืœืชืช sql.
  • variable - ืฉื ื”ืžืฉืชื ื” Python ืฉื‘ื• ื”ื ืชื•ื ื™ื ื›ืชื•ื‘ื™ื.
  • type - list ืื• ืคื ื“ื•ืช dataframe.
  • namespace - ื”ืื–ื•ืจ ื‘ื• ืชื‘ื•ืฆืข ื”ื‘ืงืฉื”.

ื‘ืฆืข ื’ืœื•ื‘ืœ

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - ื”ืขื‘ืจืช ื’ืœื•ื‘ืœ ืœืคื™ื™ืชื•ืŸ.

ื˜ืขื ื•ืช:

  • global ื”ื•ื ืฉืžื• ืฉืœ ื”ื’ืœื•ื‘ืœื™ ื‘ืœื™ ^
  • variable - ืฉื ื”ืžืฉืชื ื” Python ืฉื‘ื• ื”ื ืชื•ื ื™ื ื›ืชื•ื‘ื™ื.
  • 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 - ืฉื ื”ืžืฉืชื ื” Python ืฉื‘ื• ื”ื ืชื•ื ื™ื ื›ืชื•ื‘ื™ื.
  • type - list ืื• ืคื ื“ื•ืช dataframe.
  • start - ืžื–ื”ื” ืžืชื—ื™ืœ.
  • end - ื–ื™ื”ื•ื™ ืกื•ืคื™
  • properties - ืจืฉื™ืžื” (ืžื•ืคืจื“ืช ื‘ืคืกื™ืง) ืฉืœ ืžืืคื™ื™ื ื™ ืžื—ืœืงื” ืฉื™ืฉ ืœื˜ืขื•ืŸ ืœืžืขืจืš ื”ื ืชื•ื ื™ื. ืžืกื›ื•ืช ื ืชืžื›ื•ืช * ะธ ?. ื‘ืจื™ืจืช ืžื—ื“ืœ - * (ื›ืœ ื”ื ื›ืกื™ื). ืชื›ื•ื ื” %%CLASSNAME ื”ืชืขืœืžื•.
  • namespace - ื”ืื–ื•ืจ ื‘ื• ืชื‘ื•ืฆืข ื”ื‘ืงืฉื”.

ื›ืœ ื”ืžืืคื™ื™ื ื™ื ืžื•ืขื‘ืจื™ื ื›ืคื™ ืฉื”ื ืœืžืขื˜ ืžืืคื™ื™ื ื™ ืกื•ื’ %Date, %Time, %Boolean ะธ %TimeStamp - ื”ื ืžื•ืžืจื™ื ืœืžื—ืœืงื•ืช Python ื”ืžืชืื™ืžื•ืช.

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 as ืžื’ื‘ืœื” ื–ื• ื”ื™ื ืจืง ืขื‘ื•ืจ ื”ืจืฉื™ืžื”.
  • ืขื‘ื•ืจ 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

ื‘ืขืฆื, ืคืขื•ืœืช Pyhton ื”ื™ื ืขื˜ื™ืคื” isc.py.Main. ืžื‘ืฆืข isc.py.ens.Operation ืžืืคืฉืจ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืชื”ืœื™ืš Python ืžืžื•ืฆืจื™ InterSystems IRIS. ื—ืžืฉ ื‘ืงืฉื•ืช ื ืชืžื›ื•ืช:

  • 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 ืขื ืžื–ื”ื” ื”ืงืฉืจ.
  • isc.py.msg.RestoreRequest ื›ื“ื™ ืœืฉื—ื–ืจ ืืช ื”ื”ืงืฉืจ ืฉืœ Python.

    ื‘ื ื•ืกืฃ, isc.py.ens.Operation ื™ืฉ ืฉืชื™ ื”ื’ื“ืจื•ืช:

    • Initializer - ื‘ื—ื™ืจืช ืžื—ืœืงื” ื”ืžื™ื™ืฉืžืช ืืช ื”ืžืžืฉืง isc.py.init.Abstract. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ื›ื“ื™ ืœื˜ืขื•ืŸ ืคื•ื ืงืฆื™ื•ืช, ืžื•ื“ื•ืœื™ื, ืžื—ืœืงื•ืช ื•ื›ื“ื•ืžื”. ื–ื” ืžื‘ื•ืฆืข ืคืขื ืื—ืช ื›ืฉื”ืชื”ืœื™ืš ืžืชื—ื™ืœ.
    • PythonLib - (ืœื™ื ื•ืงืก ื‘ืœื‘ื“) ืื ืืชื” ืจื•ืื” ืฉื’ื™ืื•ืช ืืชื—ื•ืœ, ื”ื’ื“ืจ ืืช ื”ืขืจืš ืฉืœื• ืœ libpython3.6m.so ืื• ืืคื™ืœื• ื‘ื ืชื™ื‘ ื”ืžืœื ืœืกืคืจื™ื™ืช Python.

ื™ืฆื™ืจืช ืชื”ืœื™ื›ื™ื ืขืกืงื™ื™ื

ื™ืฉื ื ืฉื ื™ ืฉื™ืขื•ืจื™ื ื–ืžื™ื ื™ื ื”ืžืงืœื™ื ืขืœ ืคื™ืชื•ื— ืชื”ืœื™ื›ื™ื ืขืกืงื™ื™ื:

  • isc.py.ens.ProcessUtils ืžืืคืฉืจ ืœืš ืœื—ืœืฅ ื”ืขืจื•ืช ืžืคืขื™ืœื•ื™ื•ืช ืขื ื”ื—ืœืคืช ืžืฉืชื ื”.
  • isc.py.util.BPEmulator ืžืงืœ ืขืœ ื‘ื“ื™ืงืช ืชื”ืœื™ื›ื™ื ืขืกืงื™ื™ื ืขื Python. ื–ื” ื™ื›ื•ืœ ืœื‘ืฆืข ืชื”ืœื™ืš ืขืกืงื™ (ื—ืœืงื™ Python) ื‘ืชื”ืœื™ืš ื”ื ื•ื›ื—ื™.

ื”ื—ืœืคื” ืžืฉืชื ื”

ื›ืœ ื”ืชื”ืœื™ื›ื™ื ื”ืขืกืงื™ื™ื ืงื™ื‘ืœื• ื‘ื™ืจื•ืฉื” 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.

ื‘ื“ื™ืงืช ืชื”ืœื™ืš ืขืกืงื™

ื™ื™ืฆื•ืจ ื”ื‘ื“ื™ืงื” ื•ืชื”ืœื™ืš ืขืกืงื™ ื”ื‘ื“ื™ืงื” ื–ืžื™ื ื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื›ื—ืœืง ืžืฉืขืจ Python. ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ื”ื:

  1. ื”ืคืขืœืช ืžืกื•ืฃ ืžืขืจื›ืช ื”ื”ืคืขืœื”: pip install pandas matplotlib seaborn.
  2. ื‘ืžืกื•ืฃ IRIS ืฉืœ InterSystems, ื”ืคืขืœ: 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 Gateway ื‘-InterSystems IRIS

ื‘ื™ืฆื•ืข ืงื•ื“

ื”ืงืจื™ืื” ื”ื—ืฉื•ื‘ื” ื‘ื™ื•ืชืจ ื”ื™ื ื‘ื™ืฆื•ืข ืงื•ื“ Python:

Python Gateway ื‘-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 Gateway ื‘-InterSystems IRIS

ื”ื•ื ืžื—ืฉื‘ ืืช ืžื˜ืจื™ืฆืช ื”ืžืชืื ื‘ืฆื“ ืฉืœ ืคื™ื™ืชื•ืŸ ื•ืžื—ืœืฅ ืืช ื”ืžืฉืชื ื” corrmat ื—ื–ืจื” ืœ-InterSystems IRIS ื‘ืคื•ืจืžื˜ JSON ืขืœ ื™ื“ื™ ื”ื’ื“ืจืช ืžืืคื™ื™ื ื™ ื”ื‘ืงืฉื”:

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

ืื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช ืืช ื”ืชื•ืฆืื•ืช ื‘-Visual Trace:

Python Gateway ื‘-InterSystems IRIS

ื•ืื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืืช ื”ืขืจืš ื”ื–ื” ื‘-BP, ืืคืฉืจ ืœืงื‘ืœ ืื•ืชื• ื›ืš: callresponse.Variables.GetAt("corrmat").

ื”ืขื‘ืจืช ื ืชื•ื ื™ื

ืœืื—ืจ ืžื›ืŸ, ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ ื”ืขื‘ืจืช ื ืชื•ื ื™ื ืž-InterSystems IRIS ืœืคื™ื™ืชื•ืŸ, ื›ืœ ื”ื‘ืงืฉื•ืช ืœื”ืขื‘ืจืช ื ืชื•ื ื™ื ืžื™ื™ืฉืžื•ืช ืืช ื”ืžืžืฉืง 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 Gateway ื‘-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 - ื ืงื” ืืช ื”ื”ืงืฉืจ ืœืคื ื™ ื”ืฉื—ื–ื•ืจ.

ืžื—ื‘ืจืช ืฆื“ืง

ืžื—ื‘ืจืช ืฆื“ืง ื”ื•ื ื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜ ื‘ืงื•ื“ ืคืชื•ื— ื”ืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ื•ืœืคืจืกื ืžื—ื‘ืจื•ืช ื”ืžื›ื™ืœื•ืช ืงื•ื“, ื”ื“ืžื™ื•ืช ื•ื˜ืงืกื˜. Python Gateway ืžืืคืฉืจ ืœืš ืœื”ืฆื™ื’ ื•ืœืขืจื•ืš ืชื”ืœื™ื›ื™ BPL ื›ืžื—ื‘ืจืช Jupyter. ืฉื™ืžื• ืœื‘ ืฉื›ืจื’ืข ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-executor ื”ืจื’ื™ืœ ืฉืœ Python 3.

ื”ืจื—ื‘ื” ื–ื• ืžื ื™ื—ื” ืฉื”ื”ืขืจื•ืช ืžื›ื™ืœื•ืช ืงื•ื“ Python ื•ืžืฉืชืžืฉื•ืช ื‘ืฉืžื•ืช ืคืขื™ืœื•ืช ื›ื›ื•ืชืจื•ืช ืงื•ื“ืžื•ืช. ื›ืขืช ื ื™ืชืŸ ืœืคืชื— ืชื”ืœื™ื›ื™ื ืขืกืงื™ื™ื ืฉืœ PythonGateway ื‘-Jupyter Notebook. ื”ื ื” ืžื” ืฉืืคืฉืจ:

  • ื™ืฆื™ืจืช ืชื”ืœื™ื›ื™ื ืขืกืงื™ื™ื ื—ื“ืฉื™ื
  • ืžื—ืง ืชื”ืœื™ื›ื™ื ืขืกืงื™ื™ื
  • ืฆื•ืจ ืคืขื™ืœื•ื™ื•ืช ื—ื“ืฉื•ืช
  • ืฉื ื” ืคืขื™ืœื•ื™ื•ืช
  • ืžื—ืง ืคืขื™ืœื•ื™ื•ืช

ื›ืืŸ ืกืจื˜ื•ืŸ ื”ื“ื’ืžื”. ื•ื›ืžื” ืฆื™ืœื•ืžื™ ืžืกืš:

ืกื™ื™ืจ ืชื”ืœื™ื›ื™ื

Python Gateway ื‘-InterSystems IRIS

ืขื•ืจืš ืชื”ืœื™ื›ื™ื

Python Gateway ื‘-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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”