{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Scheduler operations\n", "\n", "This example demonstrates how Lightworks can be used for interacting with the scheduling system." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import lightworks as lw\n", "from lightworks import remote\n", "\n", "try:\n", " remote.token.load(\"main_token\")\n", "except remote.TokenError:\n", " print(\n", " \"Token could not be automatically loaded, this will need to be \"\n", " \"manually configured.\"\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For testing, we'll create and submit a very small job to the system and save the id of this job." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "sampler = lw.Sampler(\n", " lw.Unitary(lw.random_unitary(4)), lw.State([1, 0, 0, 0]), n_samples=100\n", ")\n", "\n", "qpu = remote.QPU(\"Artemis\")\n", "test_job = qpu.run(sampler, job_name=\"Test job\")\n", "test_job_id = test_job.job_id" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Job management\n", "\n", "There is a set of functions provided for managing jobs once they are submitted for the system. The majority of these can be completed directly using the created Job object when submitted (as demonstrated later), but if for some reason this no longer exists then the job ID may also be used. This can be seen when creating a job or may be retrieved from the dashboard. \n", "\n", "First, we'll use ``list_scheduled_jobs`` and ``show_scheduled`` to view all job IDs waiting for execution and the status of these jobs respectively. If you submitted the test job above recently then this should appear here. It may not have a queue position, depending on whether or not it has been allocated one yet." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[17770]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote.list_scheduled_jobs()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job IDStatusQueue Position
017770Scheduled2
\n", "
" ], "text/plain": [ " Job ID Status Queue Position\n", "0 17770 Scheduled 2" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote.show_scheduled()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then view the different quantities about the test job, such as the job status, ID, queue position and any logging information." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Scheduled'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote.get_job_status(test_job_id)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ArtemisJobDetails(job_id=17770, queue_position=2, job_status=, created_date='2025-10-16T08:25:47.928816Z', updated_date='2025-10-16T08:25:49.845111Z', logs=[{'message': 'Job received successfully', 'createdDate': '2025-10-16T08:25:47.928934Z', 'status': 'Accepted', 'meta': {}}, {'message': 'Job status updated to Scheduled', 'createdDate': '2025-10-16T08:25:49.800317Z', 'status': 'Scheduled', 'meta': {}}], notes=None)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote.get_job_details(test_job_id)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to cancel a job using the ID with ``cancel_job``. This is skipped here as we'd like to view the results from the job." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "if False:\n", " remote.cancel_job(test_job_id)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, ``check_job_complete`` can be quickly used to check if a job is complete, or create a loop for waiting, and then the results can be downloaded with ``get_results``. These are then plotted below." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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7rtj1qxZRXD6W4sWLYp27dpFly5d6uzv3r17cWxTxo4dW/Si1WwLFixoktoBALZGm8gkhaOLLrooHnvssejQoUOjnbd9+/bFBgDQnGXrCUu3G99///044IADok2bNsWWBt/feOONxevU47V27dpYunRpne9LT0f26NEjV9kAAC27J+yII46I119/vc6+b37zm8W4r8suu6wYy9W2bduYPn16MTVFMmfOnJg/f34MHjw4U9UAAC08hG2//faxzz771Nm37bbbFnOC1ew/66yzYsyYMdG1a9fo1KlTjBo1qghgBx98cKaqAQBaeAj7LCZNmhStW7cuesLS1BPDhw+Pm2++OXdZAABbrVV1dXV1lLE0T1iaqiI9KZl605pK38sfabJzs3XmXXts7hIAqBDLtyB3ZJ8nDACgEglhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAABkIYQAAGQhhAAAZCGEAAC0lhM2aNStef/312vcPPvhgnHjiifFv//ZvsXbt2sasDwCgLDUohJ133nnxhz/8oXj9xz/+MU4++eT43Oc+F9OmTYtLL720sWsEACg7DQphKYDtv//+xesUvA477LC46667YurUqXHvvfc2do0AAGWnQSGsuro61q9fX7x+/PHH45hjjileV1VVxQcffNC4FQIAlKEGhbADDzwwrrnmmvjZz34WTz/9dBx77LHF/rlz50b37t0/83luueWW2HfffaNTp07FNnjw4PjlL39Ze3z16tVx/vnnR7du3WK77baLkSNHxuLFixtSMgBAyw9hkyZNKgbnX3DBBXHFFVfEbrvtVuz/3//93zjkkEM+83l69eoV1157bcycOTNefvnlGDp0aJxwwgnxu9/9rjh+8cUXx8MPP1zc8kxhb+HChTFixIiGlAwA0Ky0qk73FhtJ6rlq06ZNsTVU165d47rrrouTTjopdtppp2KsWXqdvPnmm7HnnnvGjBkz4uCDD/5M51u+fHl07tw5li1bVvS2NZW+lz/SZOdm68y79v/31AJAU9uS3NGgnrBdd901lixZUm8I22OPPRpyyvjkk0/i7rvvjlWrVhW3JVPv2Lp162LYsGG1nxkwYED07t27CGGbsmbNmuI/wIYbAEBz06Auq3nz5hWhqb4A9Oc//3mLzpXmG0uhKwW4NO7r/vvvj7322itmz54d7dq1iy5dutT5fBpztmjRok2eb8KECfG9731vi2qAxqA3tHnTIwq06BD20EMP1b7+1a9+VXS31UihbPr06dGvX78tKqB///5F4ErddmlM2RlnnFGM/2qosWPHxpgxY2rfp56w9NQmAECLDWFpVvykVatWRVjaUNu2baNv377xwx/+cIsKSL1dNQP7Bw0aFC+99FL86Ec/iq997WvF7PtLly6t0xuWno7s0aPHJs/Xvn37YgMAaM62aExYmhssbWlc1vvvv1/7Pm3pVuScOXPiuOOO26qCas6VAlkKdql3rUY6//z584vblwAAFTcmLM0H1hjSrcOjjz66CHUrVqwonoR86qmnam91nnXWWcWtxfTEZHrCYNSoUUUA+6xPRgIANFcNnksi9VClraZHbEN33HHHZzpH+t7TTz893nvvvSJ0pYlbUwA78sgja+cja926dTFJa+odGz58eNx8880NLRkAoGWHsPT04fjx44uZ83fZZZdijFhD3H777Z96vEOHDjF58uRiAwCISg9ht956a7FY9ze+8Y3GrwgAoAI0aLLW9NTilixPBABAI4Sws88+uxhEDwBACW9Hptnt/+M//iMef/zxYjB9mkpiQxMnTmxgOQAAlaFBIey1116L/fffv3j929/+ts6xhg7SBwCoJA0KYU8++WTjVwIAUEEaNCYMAIAMPWFf+cpXPvW24xNPPLE1NQEAlL0GhbCa8WA11q1bF7Nnzy7Gh/3twt4AADRSCEvLCdXn6quvjpUrVzbklAAAFaVRx4Sddtppn3ndSACAStaoIWzGjBnFeo8AADTB7cgRI0bUeV9dXR3vvfdevPzyy3HllVc25JQAABWlQSGsc+fOdd63bt06+vfvH+PHj4+vfvWrjVUbAEDZalAImzJlSuNXAgBQQRoUwmrMnDkz3njjjeL13nvvHQMHDmysugAAylqDQtj7778fJ598cjz11FPRpUuXYt/SpUuLSVzvvvvu2GmnnRq7TgCAstKgpyNHjRoVK1asiN/97nfx4YcfFluaqHX58uVx4YUXNn6VAABlpkE9YY8++mg8/vjjseeee9bu22uvvWLy5MkG5gMANFVP2Pr166Nt27Yb7U/70jEAAJoghA0dOjQuuuiiWLhwYe2+d999Ny6++OI44ogjGnJKAICK0qAQdtNNNxXjv/r27Ruf//zni61fv37Fvh//+MeNXyUAQJlp0JiwqqqqmDVrVjEu7M033yz2pfFhw4YNa+z6AADK0hb1hD3xxBPFAPzU49WqVas48sgjiycl0/aFL3yhmCvs2WefbbpqAQAqMYTdcMMNcc4550SnTp3qXcrovPPOi4kTJzZmfQAAZWmLQtirr74aRx111CaPp+kp0iz6AAA0YghbvHhxvVNT1GjTpk385S9/2ZJTAgBUpC0KYX/3d39XzIy/Ka+99lrssssujVEXAEBZ26IQdswxx8SVV14Zq1ev3ujYxx9/HOPGjYvjjjuuMesDAChLWzRFxXe/+9247777Yo899ogLLrgg+vfvX+xP01SkJYs++eSTuOKKK5qqVgCAygxh3bt3jxdeeCG+/e1vx9ixY6O6urrYn6arGD58eBHE0mcAAGjkyVr79OkTv/jFL+Kjjz6Kt99+uwhiu+++e+ywww5beioAgIrVoBnzkxS60gStAACUaO1IAAC2jhAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAJCBEAYAkIEQBgCQgRAGAFBpIWzChAnxhS98IbbffvvYeeed48QTT4w5c+bU+czq1avj/PPPj27dusV2220XI0eOjMWLF2erGQCgxYewp59+ughYL774Yjz22GOxbt26+OpXvxqrVq2q/czFF18cDz/8cEybNq34/MKFC2PEiBE5ywYA2GptIqNHH320zvupU6cWPWIzZ86Mww47LJYtWxa333573HXXXTF06NDiM1OmTIk999yzCG4HH3zwRudcs2ZNsdVYvnx5CX4SAIAWPCYsha6ka9euxdcUxlLv2LBhw2o/M2DAgOjdu3fMmDFjk7c4O3fuXLtVVVWVqHoAgBYYwtavXx+jR4+OL33pS7HPPvsU+xYtWhTt2rWLLl261Pls9+7di2P1GTt2bBHmarYFCxaUpH4AgBZzO3JDaWzYb3/723juuee26jzt27cvNgCA5qxZ9IRdcMEF8fOf/zyefPLJ6NWrV+3+Hj16xNq1a2Pp0qV1Pp+ejkzHAABaqqwhrLq6ughg999/fzzxxBPRr1+/OscHDRoUbdu2jenTp9fuS1NYzJ8/PwYPHpyhYgCAMrgdmW5BpicfH3zwwWKusJpxXmlAfceOHYuvZ511VowZM6YYrN+pU6cYNWpUEcDqezISAKClyBrCbrnlluLrkCFD6uxP01CceeaZxetJkyZF69ati0la09QTw4cPj5tvvjlLvQAAZRHC0u3IzenQoUNMnjy52AAAykWzGJgPAFBphDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADNrk+EMBylXfyx/JXQKfYt61x+YuAWrpCQMAyEAIAwDIQAgDAMhACAMAyEAIAwDIQAgDAMhACAMAyEAIAwDIQAgDAMhACAMAyEAIAwDIQAgDAKi0EPbMM8/E8ccfHz179oxWrVrFAw88UOd4dXV1XHXVVbHLLrtEx44dY9iwYfHWW29lqxcAoCxC2KpVq2K//faLyZMn13v8Bz/4Qdx4441x6623xq9//evYdtttY/jw4bF69eqS1woA0JjaREZHH310sdUn9YLdcMMN8d3vfjdOOOGEYt+dd94Z3bt3L3rMTj755BJXCwBQAWPC5s6dG4sWLSpuQdbo3LlzHHTQQTFjxoxNft+aNWti+fLldTYAgOam2YawFMCS1PO1ofS+5lh9JkyYUIS1mq2qqqrJawUAKJsQ1lBjx46NZcuW1W4LFizIXRIAQMsJYT169Ci+Ll68uM7+9L7mWH3at28fnTp1qrMBADQ3zTaE9evXrwhb06dPr92XxnelpyQHDx6ctTYAgBb9dOTKlSvj7bffrjMYf/bs2dG1a9fo3bt3jB49Oq655prYfffdi1B25ZVXFnOKnXjiiTnLBgBo2SHs5Zdfjq985Su178eMGVN8PeOMM2Lq1Klx6aWXFnOJnXvuubF06dL48pe/HI8++mh06NAhY9UAAC08hA0ZMqSYD2xT0iz648ePLzYAgHLSbMeEAQCUMyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIIM2Of5QAChnfS9/JHcJfIp51x4bzYGeMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMACADFpECJs8eXL07ds3OnToEAcddFD85je/yV0SAEB5h7B77rknxowZE+PGjYtZs2bFfvvtF8OHD4/3338/d2kAAA3WJpq5iRMnxjnnnBPf/OY3i/e33nprPPLII3HHHXfE5ZdfvtHn16xZU2w1li1bVnxdvnx5k9a5fs1fm/T8NFxT/7+voQ00b9oBiXZAU7eDmnNXV1dv/sPVzdiaNWuqt9lmm+r777+/zv7TTz+9+h/+4R/q/Z5x48aln9pms9lsNputOte2YMGCzeacZt0T9sEHH8Qnn3wS3bt3r7M/vX/zzTfr/Z6xY8cWty9rrF+/Pj788MPo1q1btGrVqslrbulSgq+qqooFCxZEp06dcpdDJtoBiXZAoh1smdQDtmLFiujZs+dmP9usQ1hDtG/fvtg21KVLl2z1tFTpF80vG9oBiXZAoh18dp07d275A/N33HHH2GabbWLx4sV19qf3PXr0yFYXAMDWatYhrF27djFo0KCYPn16nduL6f3gwYOz1gYAsDWa/e3INL7rjDPOiAMPPDC++MUvxg033BCrVq2qfVqSxpVu5abpQP72li6VRTsg0Q5ItIOm0yqNzo9m7qabborrrrsuFi1aFPvvv3/ceOONxaStAAAtVYsIYQAA5aZZjwkDAChXQhgAQAZCGABABkIYAEAGQhgAQAZCGABABkIY9S7WCtoBiXZAoh00DSGMOh5//PHYYYcd4sEHH8xdChlpByTaAYl20HSEMOr46U9/Gttuu23xlcqlHZBoByTaQdMxYz61Vq5cGbvssktMnjw5zj333Hj33XejW7duucuixLQDEu2ARDtoWnrCqDVt2rTo1atXnH766bHffvvFf//3f+cuiQy0AxLtgEQ7aFpCGLWmTp0a3/jGN4rXp512WkyZMiV3SWSgHZBoByTaQdNyO5LC3LlzY4899og//vGPUVVVFUuWLImePXvGrFmzYu+9985dHiWiHZBoByTaQdPTE0YhDbg89NBDi1+0JN3zP+qoo4p/BVE5tAMS7YBEO2h6QhiFO++8s7jnv6HU9fxf//VfsX79+mx1UVraAYl2QKIdND0hjOJplyFDhsQ//dM/1dl/wgknxDHHHBPz5s3LVhulox2QaAck2kFpGBMGAJCBnjAAgAyEMOL3v/99/Ou//msMHDiwmJQvbel12peOwYIFC+Jf/uVfcpdBCbgekGgHpeF2ZIX75S9/GSeeeGIccMABMXz48OjevXuxf/HixfHYY4/FzJkzi/XC0jEq16uvvlq0kU8++SR3KTQh1wMS7aB0hLAKl2ZATgMtx48fX+/xq6++Ou6777547bXXSl4bpfPQQw996vE0T9B3vvMdIazMuR6QaAelI4RVuI4dO8bs2bOjf//+9R6fM2dO7L///vHxxx+XvDZKp3Xr1tGqVav4tMtBOi6ElTfXAxLtoHSMCatwffv2jUceeWSTx9OxPn36lLQmSi+N90j/sk1z/9S3pRmyKX+uByTaQem0KeGfRTOUuptPPfXUeOqpp2LYsGF17v1Pnz49Hn300bjrrrtyl0kTGzRoUDHOI92CqM/meskoD64HJNpB6bgdSbzwwgtx4403xowZM2LRokXFvh49esTgwYPjoosuKr5S3p599tlYtWpVsSRJfdKxl19+OQ4//PCS10ZpuR6QaAelIYQBAGRgTBgAQAZCGJs1dOjQ+P73vx9//etfc5dCRmmy1p/97Ge5yyAz1wMS7aBxCGFsVu/evYvBmAMGDMhdChmlucKuvPLK4tF0KpfrAYl20DiMCeMzW758eXTq1Cl3GWSWlizZa6+9cpdBZq4HJNrB1hHCAAAyME8Y8cEHH8Qdd9yx0aPIhxxySJx55pmx00475S6REli7dm088MAD9baDNH9Yu3btcpdICbgesDlpvrDbbrstrrrqqtyltHh6wircSy+9VCzC+rnPfa7eSfnSoMtf/epXceCBB+YulSb09ttvF+1g4cKFcdBBB9VpB7/+9a+jV69exaK+u+22W+5SaUKuB3wWr776arG4t2XMtp4QVuEOPvjgYrHWW2+9tZgVfUOpaXzrW98qFmlN/yqmfB155JGx7bbbxp133rnR+I405uP0008v1olLfwFTvlwPSDa3MPebb74Zp5xyihDWCISwCpcWan3llVc2+YRL+mUbOHCghVrLXOr5+M1vfhP77LNPvcdff/31oofM4+jlzfWApHXr1ptcqqxmf/oqhG09U1RUuDTWI/3luynpWM0tCcpXly5dYt68eZs8no6lz1DeXA9IunbtGj/5yU9i7ty5G21pqpqf//znuUssGwbmV7hLLrkkzj333GLx5iOOOGKjMSDpF/H666/PXSZN7Oyzzy5uOaZ5wOprB9dcc02MGjUqd5k0MdcDkkGDBhXjQ/v06VPv8aVLl9bbS8aWczuSuOeee2LSpEnFhbeme3mbbbYpfhHHjBkT//zP/5y7RErg3//93+NHP/pR8URczXigdHlIvSOjR4+OSy+9NHeJlIDrAffff3+sWrUqTjvttHqPf/TRR/HQQw/FGWecUfLayo0QRq1169YVj6cnO+64Y7Rt2zZ3SWSQbjlsODVBv379cpdEBq4H0PSEMACADAzMZ7Ms3Ewyfvz4ePbZZ3OXQWauBySuB41DTxibNWTIkNqn42bPnp27HDJJtyXTAO00YPvhhx/OXQ6ZuB6QuB40Dk9HsllPPfVU7cLNVPZYsTQ/1JNPPpm7FDJyPSBxPWgcesIAADLQE8anSo8ip67mNIcU5S9Nxvm3CzcPHjw4vvjFL+YujRKxkDs1XA+anp4wPpWFWivD+++/HyNHjoznn38+evfuXWeSzvnz58eXvvSluPfee2PnnXfOXSpNyELuJK4HpSOEVbi0OPPmFnI9/PDDhbAyd9JJJxV/8U6ZMiX69+9f59icOXOKJ+J69uwZ06ZNy1YjTc9C7iSuB6UjhFW4moVaN8VCrZVh++23j2eeeaZYnLk+afb09FTcihUrSl4bpWMhdxLXg9IxJqzCpV+2K664oriw1uett96K8847r+R1UVrt27f/1F7RdLFNn6EyFnLfVAizkHtlcD0oHSGswqXxXkm65VifdMHVWVr+vva1rxXrwKU1A9O8PzW3otKFOC3cnNYMPOWUU3KXSROzkDuJ60HpCGEV7tRTTy3GeGxKehpm3LhxJa2J0ps4cWKsX78+Tj755Pi///u/2ifg0pNybdq0ibPOOiuuv/763GVSglnQ05iw6667Lr7zne9stJD7ZZddZiH3CuB6UDrGhAG10r9003iPDR9JHzRo0EaDtCl/FnLH9aDpCWEAABlYwJvNSo+rv/POO7nLIDPtgMTCzSSuB41DTxifaRqLtm3bxrnnnhs//vGPc5dDJtoBiYWbSVwPGoeeMDYrDdB88803Y88998xdChlpB9SMFVuyZEl8+9vfzl0KGbkeNA49YQAAGZiigkJ6+iWtDbfhUzBpAtf0lcqhHfBpVq1aVTwtd9hhh+UuhRJwPWh6esIqXLqophnx77777mJOoK5duxb7P/zww2JuoDQh32233VYsZ0L50g74LF599dVigmfLmJU314PSMSaswl100UXFWnGPPPJIrF69uhhwm7b0+he/+EVxLH2G8qYdADVcD0pHT1iF22GHHYpftEMOOaTe488//3wcd9xx8dFHH5W8NkpHOyCp6fHYlNQDtnLlSj1hZc71oHSMCatw6QmXmiUp6pOOpc9Q3rQDkjVr1hRPPf793/99vcf/9Kc/xfe+972S10VpuR6UjhBW4dK/ZtI8L7fffnsMHDiwzrFXXnmluCAff/zx2eqjNLQDkv333z+qqqqKxZs3NSZMCCt/rgelY0xYhbvpppuie/fuxXpg3bp1K+Z8SVt6feCBB8bOO+9cfIbyph2QHHvssbF06dJPvV15+umnl7QmSs/1oHSMCaPwxhtvxIwZM4rBl0l6BHnw4MExYMCA3KVRQtoBUMP1oOkJYQAAGRgTVuFrwKU5YLbU6NGj48ILL2ySmig97YBEOyDRDkpLT1gFe/rppxv0fX379o0+ffo0ej3koR2QaAck2kFpCWEAABl4OhIAIAMhDAAgAyEMACADIQwAIAMhDAAgAyEMKFt/+ctfinXuevfuHe3bty9m/B4+fHg8//zzxfE0H9IDDzzQoMfxb7jhhiaoGKgkJmsFytbIkSNj7dq18dOf/jR23XXXYvmV6dOnx5IlS3KXBmCeMKA8pYWod9hhh3jqqafi8MMPr7c3609/+lPt+zTR5Lx58+Kdd96JMWPGxIsvvhirVq0qFi6eMGFCDBs2rPjckCFDNprQsuYy+txzz8XYsWPj5Zdfjh133DH+8R//sfjebbfdtsl/XqDlcTsSKEvbbbddsaXbjWvWrNno+EsvvVR8nTJlSrz33nu171euXBnHHHNM0WP2yiuvxFFHHRXHH398zJ8/vzh+3333Ra9evWL8+PHF96UtSeEtfTb1vr322mtxzz33FKHsggsuKOnPDbQcesKAsnXvvffGOeecEx9//HEccMABRY/YySefHPvuu2/tmLD7778/TjzxxE89zz777BPf+ta3agNV6kVLa+WlrcbZZ58d22yzTdx22221+1IIS39m6lHr0KFDk/2cQMukJwwoW6lXauHChfHQQw8VvVTp1mQKY1OnTt3k96SesEsuuaS4DdmlS5eiN+2NN96o7QnblFdffbU4b00PXNrSQwDr16+PuXPnNsFPB7R0BuYDZS31QB155JHFduWVVxY9VuPGjYszzzyz3s+nAPbYY4/F9ddfH7vttlt07NgxTjrppGKA/6dJ4e28886LCy+8cKNj6elMgL8lhAEVZa+99qqdlqJt27bxySef1Dmepq9IAS0Nqq8JV2nA/obatWu30felHrbf//73RXAD+CzcjgTKUpqGYujQofGf//mfxUD5dEtw2rRp8YMf/CBOOOGE2rFdaQD+okWL4qOPPir27b777sXg+9mzZxe3GE899dTiluKG0vc988wz8e6778YHH3xQ7LvsssvihRdeKMaNpe9966234sEHHzQwH9gkIQwoS2lM1kEHHRSTJk2Kww47rBhcn25HpoH6N910U/GZH/7wh8Wtx6qqqhg4cGCxb+LEicXUFoccckjxVGQa15V6uTaUnoxMvWOf//znY6eddir2pcH+aeqKP/zhD3HooYcW57vqqquiZ8+eGX56oCXwdCQAQAZ6wgAAMhDCAAAyEMIAADIQwgAAMhDCAAAyEMIAADIQwgAAMhDCAAAyEMIAADIQwgAAMhDCAACi9P4fOY0cz886cpsAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "while not remote.check_job_complete(test_job_id):\n", " pass\n", "\n", "results = remote.get_results(test_job_id)\n", "\n", "results.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## QPU\n", "\n", "For interacting with QPUs, we can first use ``list_qpus``, to view the system that are available on the connected platform." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Artemis']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote.list_qpus()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A QPU can then be selected and more details about this system retrieved, allowing the suitability of a job on the system to be validated." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ArtemisQPU(name='Artemis', id=1, n_modes=20, max_photon_input=8, max_detection_filter=4, default_max_samples=1000000, max_samples={1: 1000000, 2: 1000000, 3: 50000, 4: 10000}, available=True, last_updated='2025-10-16T08:26:21.96898Z')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "remote.get_qpu_details(\"Artemis\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, a QPU backend can be created and the details viewed through this." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ArtemisQPU(name='Artemis', id=1, n_modes=20, max_photon_input=8, max_detection_filter=4, default_max_samples=1000000, max_samples={1: 1000000, 2: 1000000, 3: 50000, 4: 10000}, available=True, last_updated='2025-10-16T08:26:21.96898Z')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qpu = remote.QPU(\"Artemis\")\n", "\n", "qpu.details" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These details can be viewed and utilised by accessing the attributes, for example below the status of the system is printed." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Status: True\n" ] } ], "source": [ "print(f\"Status: {qpu.details.available}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Job\n", "\n", "Once a QPU backend is create and a job is then run against this, create a Job object which is intended for management of the job." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "job = qpu.run(sampler)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Various attributes are included for viewing the quantities of a particular job." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ID: 17771\n", "Status: Scheduled\n", "Complete: False\n", "Success: False\n", "Queue position: None\n" ] } ], "source": [ "print(f\"ID: {job.job_id}\")\n", "print(f\"Status: {job.status}\")\n", "print(f\"Complete: {job.complete}\")\n", "print(f\"Success: {job.success}\")\n", "print(f\"Queue position: {job.queue_position}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And a full set of details can be accessed through the details attribute." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ArtemisJobDetails(job_id=17771, queue_position=None, job_status=, created_date='2025-10-16T08:26:23.291578Z', updated_date='2025-10-16T08:26:24.441621Z', logs=[{'message': 'Job received successfully', 'createdDate': '2025-10-16T08:26:23.291705Z', 'status': 'Accepted', 'meta': {}}, {'message': 'Job status updated to Scheduled', 'createdDate': '2025-10-16T08:26:24.115197Z', 'status': 'Scheduled', 'meta': {}}, {'message': 'Job status updated to Running', 'createdDate': '2025-10-16T08:26:24.441551Z', 'status': 'Running', 'meta': {}}], notes=None)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "job.details" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also possible to view the exact payload which was submitted for the scheduling system. This is unlikely to be useful for regular operations but may be required for debugging the system." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ArtemisPayload(qpu='Artemis', job_name='Job', lightworks_version='2.3.1', n_modes=4, input=lightworks.State(|1,0,0,0>), n_samples=100, min_detection=1, direct_implementation=False, unitary=array([[ 0.33464692+0.39627754j, -0.0875433 +0.15342565j,\n", " -0.24340263-0.005657j , 0.71471217+0.36011382j],\n", " [-0.67836579-0.12975142j, 0.37935145+0.37350074j,\n", " 0.20661854+0.19734238j, 0.39044375+0.07411169j],\n", " [-0.07241614+0.09773986j, -0.32679932+0.59481738j,\n", " 0.09139841-0.6489584j , -0.00667003-0.30830529j],\n", " [ 0.39468738+0.28876405j, 0.16162052+0.44571258j,\n", " 0.55815044+0.34359183j, -0.29656093+0.13609064j]]), circuit_spec=None, job_data=None)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "job.payload" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once a job is submitted, ``wait_until_complete`` can be used to wait until results are ready and then these can be downloaded & plotted or processed as necessary." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAI/CAYAAAA/cQ7MAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJaxJREFUeJzt3QmQVdWZB/APZFMUEFSQAYTEPY4bThQzUYMYjMaBUWdiHKNm3OIoLiSlMgaNjFU60YAxYnRSijETR4txj1FLMS6jaNxQE5doIpERgbggQgQc6Klzq7qLDo1L2/0+eP37Vd3q7ntfv/7Q0+/9+5xzz+nU0NDQEAAA1FTn2v44AAAKIQwAIIEQBgCQQAgDAEgghAEAJBDCAAASCGEAAAm6RJ1buXJlzJ07NzbaaKPo1KlTdjkAQB1raGiI9957LwYOHBidO3fu2CGsBLDBgwdnlwEAdCBz5syJQYMGdewQVnrAGv9j9OrVK7scAKCOLVq0qOr8acwfHTqENQ5BlgAmhAEAtfBxpkCZmA8AkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACTokvFD69HQs+7ILoE1mH3hgdklAMBq9IQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgI4cwi688MLo1KlTnHbaaU3nli5dGieddFL069cvNtxwwzjkkENi/vz5qXUCANRNCHv88cfjyiuvjB133LHZ+dNPPz1uv/32mD59ejzwwAMxd+7cOPjgg9PqBAComxC2ePHi+Kd/+qf4yU9+EhtvvHHT+XfffTeuuuqqmDx5cowcOTKGDx8e06ZNi0ceeSQeffTR1JoBANb5EFaGGw888MAYNWpUs/NPPvlkfPDBB83Ob7vttjFkyJCYOXPmGp9v2bJlsWjRomYHAMDapkvmD7/++uvjqaeeqoYj/9K8efOiW7du0adPn2bn+/fvX11bkwsuuCDOO++8dqkXAGCd7wmbM2dOnHrqqfHzn/88evTo0WbPO2HChGoos/EoPwcAYG2TFsLKcOOCBQti1113jS5dulRHmXx/6aWXVp+XHq/ly5fHwoULm31fuTtywIABa3ze7t27R69evZodAABrm7ThyH333Teee+65Zue++c1vVvO+zjzzzBg8eHB07do1ZsyYUS1NUbz00kvx2muvxYgRI5KqBgBYx0PYRhttFDvssEOzcz179qzWBGs8f8wxx8T48eOjb9++VY/WuHHjqgC2xx57JFUNAFAHE/M/ypQpU6Jz585VT1i563H06NFx+eWXZ5cFAPCpdWpoaGiIOlaWqOjdu3c1Sb8954cNPeuOdntuPp3ZFx6YXQIAHcSiT5A70tcJAwDoiIQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQB0tBD24x//OHbcccfo1atXdYwYMSLuvPPOputLly6Nk046Kfr16xcbbrhhHHLIITF//vzMkgEA1v0QNmjQoLjwwgvjySefjCeeeCJGjhwZY8aMid/+9rfV9dNPPz1uv/32mD59ejzwwAMxd+7cOPjggzNLBgBo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fTY233zztqgLAKCufaIQdsABB8TEiRNj6dKlq117//3349xzz42vfvWrbVkfAEBd+kRLVHz3u9+Nm266Kbbeeus4+eSTY5tttqnOl2UqypZFK1asiLPPPru9agUA6JghrH///vHII4/EiSeeGBMmTIiGhobqfFmuYvTo0VUQK48BAKCNF2vdYost4pe//GW888478corr1RBbKuttoqNN974kz4VAECH1aoV84sSusoCrQAA1GjvSAAAPh0hDAAggRAGAJBACAMASCCEAQB0tBB2wQUXVHdYbrTRRrHZZpvF2LFj46WXXmr2mLI6/0knnRT9+vWLDTfcMA455JBqD0sAgHVZagh74IEHqoD16KOPxj333BMffPBBfPnLX44lS5Y0Peb000+P22+/PaZPn149fu7cuXHwwQdnlg0AkLdOWFu46667mn19zTXXVD1iTz75ZOy1117x7rvvxlVXXRXXXXddjBw5snrMtGnTYrvttquC2x577JFUOQBAHc0JK6Gr6Nu3b/WxhLHSOzZq1Kimx2y77bYxZMiQmDlzZovPsWzZsli0aFGzAwBgbZPaE7aqlStXxmmnnRZf+MIXYocddqjOzZs3L7p16xZ9+vRp9tiyP2W5tqZ5Zuedd15NagaAlgw9647sEvgQsy88MNYGa01PWJkb9pvf/Cauv/76T/U8ZWPx0qPWeMyZM6fNagQAqKuesJNPPjl+8YtfxIMPPhiDBg1qOj9gwIBYvnx5LFy4sFlvWLk7slxrSffu3asDAGBtltoT1tDQUAWwm2++Oe67774YNmxYs+vDhw+Prl27xowZM5rOlSUsXnvttRgxYkRCxQAAddATVoYgy52Pt956a7VWWOM8r969e8f6669ffTzmmGNi/Pjx1WT9Xr16xbhx46oA5s5IAGBdlhrCfvzjH1cf99lnn2bnyzIURx99dPX5lClTonPnztUireXOx9GjR8fll1+eUi8AQF2EsDIc+VF69OgRU6dOrQ4AgHqx1twdCQDQkQhhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwBIIIQBACQQwgAAEghhAAAJhDAAgARCGABAAiEMACCBEAYAkEAIAwDoaCHswQcfjIMOOigGDhwYnTp1iltuuaXZ9YaGhjjnnHNi8803j/XXXz9GjRoVL7/8clq9AAB1EcKWLFkSO+20U0ydOrXF69///vfj0ksvjSuuuCIee+yx6NmzZ4wePTqWLl1a81oBANpSl0j0la98pTpaUnrBLrnkkvjud78bY8aMqc5de+210b9//6rH7LDDDmvx+5YtW1YdjRYtWtRO1QMA1OGcsFdffTXmzZtXDUE26t27d+y+++4xc+bMNX7fBRdcUD2u8Rg8eHCNKgYAqIMQVgJYUXq+VlW+brzWkgkTJsS7777bdMyZM6fdawUAWKeGI9tD9+7dqwMAYG221vaEDRgwoPo4f/78ZufL143XAADWVWttCBs2bFgVtmbMmNFskn25S3LEiBGptQEArNPDkYsXL45XXnml2WT8WbNmRd++fWPIkCFx2mmnxfnnnx9bbbVVFcomTpxYrSk2duzYzLIBANbtEPbEE0/El770paavx48fX3086qij4pprrokzzjijWkvs+OOPj4ULF8bf/u3fxl133RU9evRIrBoAYB0PYfvss0+1HtialFX0J02aVB0AAPVkrZ0TBgBQz4QwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACYQwAIAEQhgAQAIhDAAggRAGAJBACAMASCCEAQAkEMIAABIIYQAACbpk/FCAejX0rDuyS+BDzL7wwOwSoImeMACABEIYAEACIQwAIIEQBgCQQAgDAEgghAEAJBDCAAASCGEAAAmEMACABEIYAEACIQwAIIEQBgCQQAgDAEgghAEAJBDCAAASCGEAAAmEMACABEIYAEACIQwAIIEQBgCQQAgDAEgghAEAJBDCAAASCGEAAAmEMACABEIYAEACIQwAIIEQBgCQQAgDAEgghAEAJBDCAAASCGEAAAmEMACABEIYAEACIQwAIIEQBgCQQAgDAEgghAEAJBDCAAASCGEAAAmEMACABEIYAEACIQwAIIEQBgCQQAgDAEiwToSwqVOnxtChQ6NHjx6x++67x69//evskgAA6juE3XDDDTF+/Pg499xz46mnnoqddtopRo8eHQsWLMguDQCg1brEWm7y5Mlx3HHHxTe/+c3q6yuuuCLuuOOOuPrqq+Oss85a7fHLli2rjkbvvvtu9XHRokXtWufKZX9u1+en9dr7/30jbWDtph1QaAe0dztofO6GhoaPfnDDWmzZsmUN6623XsPNN9/c7PyRRx7Z8Hd/93ctfs+5555b/tUOh8PhcDgcDVnHnDlzPjLnrNU9YW+++WasWLEi+vfv3+x8+frFF19s8XsmTJhQDV82WrlyZbz99tvRr1+/6NSpU7vXvK4rCX7w4MExZ86c6NWrV3Y5JNEOKLQDCu3gkyk9YO+9914MHDjwIx+7Voew1ujevXt1rKpPnz5p9ayryi+aXza0AwrtgEI7+Ph69+697k/M32STTWK99daL+fPnNztfvh4wYEBaXQAAn9ZaHcK6desWw4cPjxkzZjQbXixfjxgxIrU2AIBPY60fjizzu4466qjYbbfd4vOf/3xccsklsWTJkqa7JWlbZSi3LAfyl0O6dCzaAYV2QKEdtJ9OZXZ+rOUuu+yyuOiii2LevHmx8847x6WXXlot2goAsK5aJ0IYAEC9WavnhAEA1CshDAAggRAGAJBACAMASCCEAQAkEMIAABIIYbS4WStoBxTaAYV20D6EMJq59957Y+ONN45bb701uxQSaQcU2gGFdtB+hDCa+elPfxo9e/asPtJxaQcU2gGFdtB+rJhPk8WLF8fmm28eU6dOjeOPPz5ef/316NevX3ZZ1Jh2QKEdUGgH7UtPGE2mT58egwYNiiOPPDJ22mmn+K//+q/skkigHVBoBxTaQfsSwmhyzTXXxDe+8Y3q8yOOOCKmTZuWXRIJtAMK7YBCO2hfhiOpvPrqq7H11lvHH/7whxg8eHC89dZbMXDgwHjqqafic5/7XHZ51Ih2QKEdUGgH7U9PGJUy4fKLX/xi9YtWlDH//fffv/oriI5DO6DQDii0g/YnhFG59tprqzH/VZWu55///OexcuXKtLqoLe2AQjug0A7anxBGdbfLPvvsE//wD//Q7PyYMWPigAMOiNmzZ6fVRu1oBxTaAYV2UBvmhAEAJNATBgCQQAgjnn/++fiXf/mX2GWXXapF+cpRPi/nyjWYM2dO/PM//3N2GdSA1wMK7aA2DEd2cHfeeWeMHTs2dt111xg9enT079+/Oj9//vy455574sknn6z2CyvX6LieeeaZqo2sWLEiuxTakdcDCu2gdoSwDq6sgFwmWk6aNKnF69/73vfipptuimeffbbmtVE7t91224deL+sEffvb3xbC6pzXAwrtoHaEsA5u/fXXj1mzZsU222zT4vWXXnopdt5553j//fdrXhu107lz5+jUqVN82MtBuS6E1TevBxTaQe2YE9bBDR06NO644441Xi/Xtthii5rWRO2V+R7lL9uy9k9LR1khm/rn9YBCO6idLjX8WayFSnfz4YcfHvfff3+MGjWq2dj/jBkz4q677orrrrsuu0za2fDhw6t5HmUIoiUf1UtGffB6QKEd1I7hSOKRRx6JSy+9NGbOnBnz5s2rzg0YMCBGjBgRp556avWR+vbQQw/FkiVLqi1JWlKuPfHEE7H33nvXvDZqy+sBhXZQG0IYAEACc8IAABIIYXykkSNHxr/927/Fn//85+xSSFQWa/3Zz36WXQbJvB5QaAdtQwjjIw0ZMqSajLnttttml0KislbYxIkTq1vT6bi8HlBoB23DnDA+tkWLFkWvXr2yyyBZ2bJk++23zy6DZF4PKLSDT0cIAwBIYJ0w4s0334yrr756tVuR99xzzzj66KNj0003zS6RGli+fHnccsstLbaDsn5Yt27dskskWVkn6sorr4xzzjknuxTamfeF2tAT1sE9/vjj1SasG2ywQYuL8pVJl3fffXfstttu2aXSjl555ZWqHcydOzd23333Zu3gsccei0GDBlWb+m655ZbZpZLIRu4dg/eF2hHCOrg99tij2qz1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "job.wait_until_complete()\n", "\n", "results = job.get_result()\n", "results.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A ``retry`` method is also provided in case this is need for any reason. Here, we instantly use the ``cancel`` method to avoid re-computing the job. " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "job.retry()\n", "job.cancel()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Results\n", "When results are returned from a job, these are stored as a dictionary-like Result object, where the keys are Lightworks States and the values are integer counts. \n", "\n", "When a result is generated on Artemis, the raw data without any post-selection is provided. This post-selection is then applied by Lightworks. To view the post-selection criteria applied to a set of results, the corresponding attribute is accessed. In this case nothing is returned as no post-selection was used in the job." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "results.post_selection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If for some reason there is an issue with the data or post-selection it is also possible to view the raw unprocessed data using ``raw_data``." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{lightworks.State(|0,1,0,0>): 45,\n", " lightworks.State(|0,0,0,1>): 30,\n", " lightworks.State(|0,0,1,0>): 5,\n", " lightworks.State(|1,0,0,0>): 20}" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.raw_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The list of outputs associated with the processed data can also be viewed." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[lightworks.State(|0,1,0,0>),\n", " lightworks.State(|0,0,0,1>),\n", " lightworks.State(|0,0,1,0>),\n", " lightworks.State(|1,0,0,0>)]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results.outputs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And lastly, it is possible to save the processed or raw data using ``save`` as required." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "results.save(\"demo_results\")\n", "results.save(\"demo_results\", raw_data=True)" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.6" } }, "nbformat": 4, "nbformat_minor": 2 }