{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "8cfa587b",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Erstellen Sie eine Qiskit-Funktion für die chemische Simulation\"\n",
        "description: \"Erfahren Sie, wie Sie die Vorlage für den Chemie-Workflow bereitstellen und ausführen\"\n",
        "---\n",
        "\n",
        "<span id=\"build-and-run-a-qiskit-function-template-for-electronic-structure-simulation-with-an-implicit-solvent-model\" />\n",
        "\n",
        "# Erstellen und Ausführen einer Qiskit-Funktionsvorlage für die Simulation der elektronischen Struktur mit einem impliziten Lösungsmittelmodell\n",
        "\n",
        "{/* cspell:ignore pvdz, fcisolver, avas, ncas, nelecas, ecore, chkfile, fcivec, hcore, ncore, myci, sqdvec, myeps, mymethod, mysolvmethod, myavas, mcscf, MCSCF, chkfile, prqs */}\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "f9bfec87",
      "metadata": {
        "tags": [
          "version-info"
        ]
      },
      "source": [
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "f3a337d1",
      "metadata": {},
      "source": [
        "Diese Vorlage, die in Zusammenarbeit mit der Cleveland Clinic entwickelt wurde, besteht aus einem Arbeitsablauf zur Berechnung der Grundzustandsenergie und der freien Solvatationsenergie eines Moleküls in einem impliziten Lösungsmittel [\\[1\\]](#references). Diese Simulationen basieren auf der sample-based quantum diagonalization (SQD)-Methode [\\[2-6\\]](#references) und dem Integralgleichungsformalismus polarizable continuum model (IEF-PCM) des Lösungsmittels [\\[7\\]](#references).\n",
        "\n",
        "Eine Schritt-für-Schritt-Anleitung zu diesem Arbeitsablauf mit einem Beispiel finden Sie im Tutorial „[Berechnungen mit implizitem Lösungsmittel unter Verwendung von Qiskit Serverless](/docs/tutorials/implicit-solvent-calculations) “.\n",
        "\n",
        "In diesem Leitfaden wird die Vorlage mit einem Methanolmolekül als gelöstem Stoff, dessen elektronische Struktur explizit simuliert wird, und Wasser als Lösungsmittel, das als kontinuierliches dielektrisches Medium angenähert wird, verwendet. Um den [Elektronenkorrelationseffekten](https://onlinelibrary.wiley.com/doi/epdf/10.1002/ijch.202100111) in Methanol Rechnung zu tragen und gleichzeitig das Gleichgewicht zwischen Rechenkosten und Genauigkeit zu wahren, werden nur die Orbitale $\\sigma$, $\\sigma^{*}$ und einsame Paare in den mit SQD IEF-PCM simulierten aktiven Raum einbezogen. Diese Orbitalauswahl erfolgt mit der [AVAS-Methode (atomic valence active space)](https://github.com/pyscf/pyscf.github.io/blob/master/examples/mcscf/43-avas.py) unter Verwendung der atomaren Orbitalkomponenten \\[C2s,2p], \\[O2s,2p] und \\[H1s], woraus sich der aktive Raum mit 14 Elektronen und 12 Orbitalen ergibt ( 14e,12o ). Die Referenzorbitale werden mit Hartree-Fock-Orbitalen mit geschlossener Schale und dem cc-pvdz-Basissatz berechnet.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "25d18ba5",
      "metadata": {},
      "source": [
        "<span id=\"workflow-introduction\" />\n",
        "\n",
        "## Einführung in den Arbeitsablauf\n",
        "\n",
        "Diese interaktive Anleitung zeigt, wie Sie diese Funktionsvorlage in Qiskit Serverless hochladen und einen Beispiel-Workload ausführen. Die Vorlage ist wie ein Qiskit-Muster mit vier Schritten aufgebaut:\n",
        "\n",
        "<span id=\"1-collect-input-and-map-the-problem\" />\n",
        "\n",
        "#### 1. Sammeln Sie Input und erfassen Sie das Problem\n",
        "\n",
        "In diesem Schritt werden die Geometrie des Moleküls, der ausgewählte aktive Raum, das Solvatationsmodell, die LUCJ-Optionen und die SQD-Optionen eingegeben. Anschließend wird die Datei PySCF Checkpoint erstellt, die die Hartree-Fock (HF)-IEF-PCM-Daten enthält. Diese Daten werden im SQD-Teil des Arbeitsablaufs verwendet. Für den LUCJ-Teil des Arbeitsablaufs erzeugt der Eingabebereich auch die Gasphasen-HF-Daten, die intern im PySCF FCIDUMP-Format gespeichert werden.\n",
        "\n",
        "Die Informationen aus der HF-Gasphasensimulation und die Definition des aktiven Raums werden als Input verwendet. Wichtig ist, dass es auch die benutzerdefinierten Informationen aus dem Eingabebereich verwendet, die die Fehlerunterdrückung, die Anzahl der Schüsse, die Optimierungsstufe des Circuit Transpiler und das Qubit-Layout betreffen.\n",
        "\n",
        "Es erzeugt Ein- und Zwei-Elektronen-Integrale innerhalb des definierten aktiven Raums. Die Integrale werden dann zur Durchführung klassischer CCSD-Berechnungen verwendet, die t2 Amplituden liefern, die wir zur Parametrisierung des LUCJ-Kreises verwenden.\n",
        "\n",
        "<span id=\"2-optimize-the-circuit\" />\n",
        "\n",
        "#### 2. Optimieren Sie den Schaltkreis\n",
        "\n",
        "Die LUCJ-Schaltung wird dann in eine ISA-Schaltung für die Zielhardware umgesetzt. Anschließend wird ein Sampler-Primitiv instanziiert, das einen Standardsatz von Optionen zur Fehlerbegrenzung enthält, um die Ausführung zu verwalten.\n",
        "\n",
        "<span id=\"3-execute-the-circuit\" />\n",
        "\n",
        "#### 3. Führen Sie den Schaltkreis aus\n",
        "\n",
        "Die LUCJ-Berechnungen liefern die Bitstrings für jede Messung, wobei diese Bitstrings den Elektronenkonfigurationen des untersuchten Systems entsprechen. Die Bitstrings werden dann als Input für die Nachbearbeitung verwendet.\n",
        "\n",
        "<span id=\"4-post-process-by-using-sqd\" />\n",
        "\n",
        "#### 4. Nachbearbeitung mit SQD\n",
        "\n",
        "In diesem letzten Schritt wird die PySCF Checkpoint-Datei mit den HF IEF-PCM-Informationen, den Bitstrings, die die von LUCJ vorhergesagten Elektronenkonfigurationen darstellen, und den im Eingabeabschnitt ausgewählten benutzerdefinierten SQD-Optionen als Eingabe verwendet. Als Ergebnis erhält man die SQD IEF-PCM-Gesamtenergie der Charge mit der niedrigsten Energie und die entsprechende freie Solvatationsenergie.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4832ef18",
      "metadata": {},
      "source": [
        "<span id=\"options\" />\n",
        "\n",
        "### Optionen\n",
        "\n",
        "Für diese Vorlage müssen Sie Optionen für die Erzeugung der LUCJ-Schaltung und SQD-Laufparameter angeben.\n",
        "\n",
        "<span id=\"lucj-options\" />\n",
        "\n",
        "#### LUCJ-Optionen\n",
        "\n",
        "Bei der Ausführung des LUCJ-Quantenschaltkreises wird eine Reihe von Proben erzeugt, die die Berechnungsbasiszustände aus der Wahrscheinlichkeitsverteilung des molekularen Systems darstellen. Um die Tiefe des LUCJ-Schaltkreises und seine Ausdrucksfähigkeit auszugleichen, werden zwischen den Qubits, die den Spin-Orbitalen mit dem entgegengesetzten Spin entsprechen, die Zwei-Qubit-Gatter angewendet, wenn diese Qubits durch ein einziges Ancilla-Qubit benachbart sind. Um diesen Ansatz auf IBM Hardware mit einer Heavy-Hex-Topologie zu implementieren, werden die Qubits, die die Spin-Orbitale mit demselben Spin repräsentieren, durch eine Linientopologie verbunden, wobei jede Linie aufgrund der Heavy-Hex-Konnektivität der Zielhardware eine Zick-Zack-Form annimmt, während die Qubits, die die Spin-Orbitale mit dem entgegengesetzten Spin repräsentieren, nur bei jedem vierten Qubit eine Verbindung haben.\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Klicken Sie hier, um weitere Details zu den erforderlichen Optionen anzuzeigen:\">\n",
        "    Der Benutzer muss das Array `initial_layout` , das den Qubits entspricht, die diese [*zickzack* muster](https://pubs.rsc.org/en/content/articlehtml/2023/sc/d3sc02516k) erfüllen, im Abschnitt `lucj_options` der Funktion SQD IEF-PCM angeben. Im Falle der SQD IEF-PCM ( 14e,12o )/cc-pvdz-Simulationen von Methanol haben wir das anfängliche Qubit-Layout gewählt, das der Hauptdiagonale der Eagle R3 QPU entspricht. Hier entsprechen die ersten 12 Elemente des `initial_layout` Arrays `[0, 14, 18, 19, 20, 33, 39, 40, 41, 53, 60, 61, ...]` den Alpha-Spin-Orbitalen. Die letzten 12 Elemente `[... 2, 3, 4, 15, 22, 23, 24, 34, 43, 44, 45, 54]` entsprechen den Beta-Spin-Orbitalen.\n",
        "\n",
        "    Wichtig ist, dass der Benutzer die `number_of_shots` bestimmt, die der Anzahl der Messungen in der LUCJ-Schaltung entspricht. Die Anzahl der Schüsse muss ausreichend groß sein, da der erste Schritt des S-CORE-Verfahrens auf den Proben im rechten Teilchensektor beruht, um eine erste Annäherung an die Grundzustandsbesetzungszahlverteilung zu erhalten.\n",
        "\n",
        "    Die Anzahl der Schüsse ist in hohem Maße system- und hardwareabhängig, aber [nicht-kovalente](https://arxiv.org/abs/2410.09209), [fragmentbasierte](https://arxiv.org/abs/2411.09861) und [implizite Lösungsmittel-SQD-Studien](https://pubs.acs.org/doi/10.1021/acs.jpcb.5c01030) legen nahe, dass man die chemische Genauigkeit erreichen kann, wenn man diese Richtlinien befolgt:\n",
        "\n",
        "    * 20.000 - 200.000 Schüsse für Systeme mit weniger als 16 Molekülorbitalen (32 Spin-Orbitale)\n",
        "    * 200.000 Aufnahmen für Systeme mit 16 - 18 Molekülorbitalen\n",
        "    * 200.000 - 2.000.000 Schüsse für Systeme mit mehr als 18 Molekülorbitalen\n",
        "\n",
        "    Die erforderliche Anzahl von Berechnungen hängt von der Anzahl der Spinorbitale im untersuchten System sowie von der Größe des Hilbertraums ab, der dem ausgewählten aktiven Raum innerhalb des untersuchten Systems entspricht. Im Allgemeinen erfordern Fälle mit kleineren Hilberträumen weniger Schüsse. Weitere verfügbare LUCJ-Optionen sind [die Optimierungsstufe des Schaltkreis-Transpilers](https://docs.quantum.ibm.com/guides/set-optimization) und [Optionen zur Fehlerunterdrückung](https://docs.quantum.ibm.com/guides/error-mitigation-and-suppression-techniques). Beachten Sie, dass sich diese Optionen auch auf die erforderliche Anzahl von Aufnahmen und die daraus resultierende Genauigkeit auswirken.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "e2b46498",
      "metadata": {},
      "source": [
        "<span id=\"sqd-options\" />\n",
        "\n",
        "#### SQD-Optionen\n",
        "\n",
        "Wichtige Optionen in SQD-Simulationen sind die `sqd_iterations`, `number_of_batches` und `samples_per_batch`. Im Allgemeinen kann die geringere Anzahl von Stichproben pro Los durch mehr Lose (`number_of_batches`) und mehr Iterationen von S-CORE (`sqd_iterations`) ausgeglichen werden. Mit mehr Stapeln können wir mehr Variationen der Konfigurationsunterräume abtasten. Da die Charge mit der niedrigsten Energie als Lösung für die Grundzustandsenergie des Systems genommen wird, können mehr Chargen die Ergebnisse durch bessere Statistiken verbessern. Durch zusätzliche Iterationen von S-CORE können mehr Konfigurationen aus der ursprünglichen LUCJ-Verteilung wiederhergestellt werden, wenn die Anzahl der Proben im richtigen Partikelsektor gering ist. Dadurch kann die Anzahl der Proben pro Charge reduziert werden.\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Klicken Sie hier, um weitere Informationen zur Konfiguration der SQD-Optionen anzuzeigen:\">\n",
        "    Eine alternative Strategie besteht darin, mehr Proben pro Charge zu verwenden, wodurch sichergestellt wird, dass die meisten der anfänglichen LUCJ-Proben im richtigen Teilchenraum während des S-CORE-Verfahrens verwendet werden und die einzelnen Teilräume eine ausreichende Vielfalt von Elektronenkonfigurationen umfassen. Dadurch verringert sich wiederum die Anzahl der erforderlichen S-CORE-Schritte, wobei nur zwei oder drei SQD-Iterationen erforderlich sind, wenn die Anzahl der Proben pro Charge groß genug ist. Mehr Stichproben pro Stapel führen jedoch zu einem höheren Rechenaufwand für jeden Diagonalisierungsschritt. Daher kann das Gleichgewicht zwischen Genauigkeit und Rechenkosten bei SQD-Simulationen durch die optimale Wahl von `sqd_iterations`, `number_of_batches` und `samples_per_batch` erreicht werden.\n",
        "\n",
        "    Die [SQD IEF-PCM-Studie](https://pubs.acs.org/doi/10.1021/acs.jpcb.5c01030) zeigt, dass bei Verwendung von drei Iterationen von S-CORE die chemische Genauigkeit erreicht werden kann, wenn diese Leitlinien befolgt werden:\n",
        "\n",
        "    * 600 Proben pro Charge in Methanol SQD IEF-PCM ( 14e,12o ) Simulationen\n",
        "    * 1500 Proben pro Charge in Methylamin SQD IEF-PCM ( 14e,13o ) Simulationen\n",
        "    * 6000 Proben pro Charge in Wasser SQD IEF-PCM ( 8e,23o ) Simulationen\n",
        "    * 16000 Proben pro Charge in Ethanol SQD IEF-PCM ( 20e,18o ) Simulationen\n",
        "\n",
        "    Genau wie die erforderliche Anzahl von Schüssen in LUCJ ist auch die erforderliche Anzahl von Proben pro Charge im S-CORE-Verfahren stark system- und hardwareabhängig. Die obigen Beispiele können verwendet werden, um den Ausgangspunkt für den Benchmark der erforderlichen Anzahl von Proben pro Charge zu schätzen. Die Anleitung zum systematischen Benchmarking der erforderlichen Anzahl von Proben pro Charge finden Sie [hier](https://qiskit.github.io/qiskit-addon-sqd/how_tos/choose_subspace_dimension.html).\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "998a0f25",
      "metadata": {},
      "source": [
        "<span id=\"deploy-and-execute-the-template-sqd-ief-pcm-function\" />\n",
        "\n",
        "## Die Vorlage SQD IEF-PCM-Funktion bereitstellen und ausführen\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "6c92ac84",
      "metadata": {
        "vscode": {
          "languageId": "plaintext"
        }
      },
      "source": [
        "<span id=\"authentication\" />\n",
        "\n",
        "### Authentifizierung\n",
        "\n",
        "Verwenden Sie `qiskit-ibm-catalog` , um sich bei `QiskitServerless` mit Ihrem API-Schlüssel (Token) zu authentifizieren, den Sie auf dem Dashboard der [IBM Quantum Platform]() finden. Dies ermöglicht die Instanziierung des serverlosen Clients zum Hochladen oder Ausführen der ausgewählten Funktion:\n",
        "\n",
        "```python\n",
        "from qiskit_ibm_catalog import QiskitServerless\n",
        "\n",
        "serverless = QiskitServerless(\n",
        "    channel=\"ibm_quantum_platform\",\n",
        "    instance=\"INSTANCE_CRN\",\n",
        "    # For `token`, use the 44-character API_KEY you created\n",
        "    # and saved from the IBM Quantum Platform Home dashboard\n",
        "    token=\"YOUR_API_KEY\"\n",
        ")\n",
        "```\n",
        "\n",
        "Optional können Sie `save_account()` verwenden, um Ihre Anmeldedaten in einer lokalen Umgebung zu speichern (siehe Anleitung zum [Einrichten Ihres IBM Cloud Kontos](/docs/guides/cloud-setup#cloud-save) ). Beachten Sie, dass dies Ihre Anmeldedaten in dieselbe Datei schreibt wie [`QiskitRuntimeService.save_account()`](/docs/api/qiskit-ibm-runtime/qiskit-runtime-service#save_account):\n",
        "\n",
        "```python\n",
        "QiskitServerless.save_account(token=\"YOUR_API_KEY\",\n",
        "    channel=\"ibm_quantum_platform\", instance=\"INSTANCE_CRN\")\n",
        "```\n",
        "\n",
        "Wenn das [Konto gespeichert ist](/docs/guides/save-credentials), muss kein Token zur Authentifizierung angegeben werden:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "9276e2d4",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_catalog import QiskitServerless\n",
        "\n",
        "serverless = QiskitServerless()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "e1f99d80",
      "metadata": {
        "vscode": {
          "languageId": "plaintext"
        }
      },
      "source": [
        "<span id=\"upload-the-template\" />\n",
        "\n",
        "### Laden Sie die Vorlage hoch\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3e0e8cc8",
      "metadata": {
        "vscode": {
          "languageId": "plaintext"
        }
      },
      "source": [
        "Um eine benutzerdefinierte Qiskit-Funktion hochzuladen, müssen Sie zunächst ein `QiskitFunction` Objekt instanziieren, das den Quellcode der Funktion definiert. Anhand des Titels können Sie die Funktion identifizieren, sobald sie sich im Remote-Cluster befindet. Der Haupteinstiegspunkt ist die Datei, die `if __name__ == \"__main__\"` enthält. Wenn Ihr Arbeitsablauf zusätzliche Quelldateien erfordert, können Sie ein Arbeitsverzeichnis definieren, das zusammen mit dem Einstiegspunkt hochgeladen wird.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "77b2b9b6",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "QiskitFunction(sqd_pcm_template)\n"
          ]
        }
      ],
      "source": [
        "from qiskit_ibm_catalog import QiskitFunction\n",
        "\n",
        "template = QiskitFunction(\n",
        "    title=\"sqd_pcm_template\",\n",
        "    entrypoint=\"sqd_pcm_entrypoint.py\",\n",
        "    # all files in `working_dir` will be uploaded\n",
        "    working_dir=\"./source_files/\",\n",
        "    dependencies=[\n",
        "        \"ffsim==0.0.54\",\n",
        "        \"pyscf==2.9.0\",\n",
        "        \"qiskit_addon_sqd==0.10.0\",\n",
        "    ],\n",
        ")\n",
        "print(template)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "72854f5a",
      "metadata": {},
      "source": [
        "Sobald die Instanz fertig ist, laden Sie sie auf Serverless hoch:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "id": "59e7fdb5",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "QiskitFunction(sqd_pcm_template)"
            ]
          },
          "execution_count": 3,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "serverless.upload(template)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "ac7d8764",
      "metadata": {
        "vscode": {
          "languageId": "plaintext"
        }
      },
      "source": [
        "Um zu überprüfen, ob das Programm erfolgreich hochgeladen wurde, verwenden Sie `serverless.list()`:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "id": "03a91030",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[QiskitFunction(sqd_pcm_template),\n",
              " QiskitFunction(hamiltonian_simulation_template)]"
            ]
          },
          "execution_count": 4,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "serverless.list()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "99408586",
      "metadata": {},
      "source": [
        "<span id=\"load-and-run-the-template-remotely\" />\n",
        "\n",
        "## Laden und führen Sie die Vorlage remote aus\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "62b37d7a",
      "metadata": {},
      "source": [
        "Die Funktionsvorlage wurde hochgeladen, sodass Sie sie mit Qiskit Serverless aus der Ferne ausführen können. Laden Sie zunächst die Vorlage nach ihrem Namen:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "id": "854d12cf",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "QiskitFunction(sqd_pcm_template)\n"
          ]
        }
      ],
      "source": [
        "template = serverless.load(\"sqd_pcm_template\")\n",
        "print(template)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "fa2dc721",
      "metadata": {
        "vscode": {
          "languageId": "plaintext"
        }
      },
      "source": [
        "Führen Sie anschließend die Vorlage mit den Eingaben auf Domänenebene für SQD-IEF PCM aus. In diesem Beispiel wird eine Arbeitslast auf Methanolbasis angegeben.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "a1719ab1",
      "metadata": {},
      "outputs": [],
      "source": [
        "molecule = {\n",
        "    \"atom\": \"\"\"\n",
        "    O -0.04559 -0.75076 -0.00000;\n",
        "    C -0.04844 0.65398 -0.00000;\n",
        "    H 0.85330 -1.05128 -0.00000;\n",
        "    H -1.08779 0.98076 -0.00000;\n",
        "    H 0.44171 1.06337 0.88811;\n",
        "    H 0.44171 1.06337 -0.88811\n",
        "    \"\"\",  # Must be specified\n",
        "    \"basis\": \"cc-pvdz\",  # default is \"sto-3g\"\n",
        "    \"spin\": 0,  # default is 0\n",
        "    \"charge\": 0,  # default is 0\n",
        "    \"verbosity\": 0,  # default is 0\n",
        "    \"number_of_active_orb\": 12,  # Must be specified\n",
        "    \"number_of_active_alpha_elec\": 7,  # Must be specified\n",
        "    \"number_of_active_beta_elec\": 7,  # Must be specified\n",
        "    \"avas_selection\": [\n",
        "        \"%d O %s\" % (k, x) for k in [0] for x in [\"2s\", \"2px\", \"2py\", \"2pz\"]\n",
        "    ]\n",
        "    + [\"%d C %s\" % (k, x) for k in [1] for x in [\"2s\", \"2px\", \"2py\", \"2pz\"]]\n",
        "    + [\"%d H 1s\" % k for k in [2, 3, 4, 5]],  # default is None\n",
        "}\n",
        "\n",
        "solvent_options = {\n",
        "    # See https://manual.q-chem.com/5.4/topic_pcm-em.html for all methods\n",
        "    \"method\": \"IEF-PCM\",  # other available methods are COSMO, C-PCM, SS(V)PE\n",
        "    \"eps\": 78.3553,  # value for water\n",
        "}\n",
        "\n",
        "lucj_options = {\n",
        "    \"initial_layout\": [\n",
        "        0,\n",
        "        14,\n",
        "        18,\n",
        "        19,\n",
        "        20,\n",
        "        33,\n",
        "        39,\n",
        "        40,\n",
        "        41,\n",
        "        53,\n",
        "        60,\n",
        "        61,\n",
        "        2,\n",
        "        3,\n",
        "        4,\n",
        "        15,\n",
        "        22,\n",
        "        23,\n",
        "        24,\n",
        "        34,\n",
        "        43,\n",
        "        44,\n",
        "        45,\n",
        "        54,\n",
        "    ],\n",
        "    \"dynamical_decoupling_choice\": True,\n",
        "    \"twirling_choice\": True,\n",
        "    \"number_of_shots\": 200000,\n",
        "    \"optimization_level\": 2,\n",
        "}\n",
        "\n",
        "sqd_options = {\n",
        "    \"sqd_iterations\": 3,\n",
        "    \"number_of_batches\": 10,\n",
        "    \"samples_per_batch\": 1000,\n",
        "    \"max_davidson_cycles\": 200,\n",
        "}\n",
        "\n",
        "backend_name = \"ibm_sherbrooke\""
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "id": "01c0667c",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "39f8fb70-79b2-43ca-b723-84e6b6135821\n"
          ]
        }
      ],
      "source": [
        "job = template.run(\n",
        "    backend_name=backend_name,\n",
        "    molecule=molecule,\n",
        "    solvent_options=solvent_options,\n",
        "    lucj_options=lucj_options,\n",
        "    sqd_options=sqd_options,\n",
        ")\n",
        "print(job.job_id)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "a9101a94",
      "metadata": {},
      "source": [
        "Überprüfen Sie den detaillierten Status des Auftrags:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 18,
      "id": "4385a34f",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "time = 2.35, status = DONE\n"
          ]
        }
      ],
      "source": [
        "import time\n",
        "\n",
        "t0 = time.time()\n",
        "status = job.status()\n",
        "if status == \"QUEUED\":\n",
        "    print(f\"time = {time.time()-t0:.2f}, status = QUEUED\")\n",
        "while True:\n",
        "    status = job.status()\n",
        "    if status == \"QUEUED\":\n",
        "        continue\n",
        "    print(f\"time = {time.time()-t0:.2f}, status = {status}\")\n",
        "    if status == \"DONE\" or status == \"ERROR\":\n",
        "        break"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4adc5293",
      "metadata": {},
      "source": [
        "Während der Auftrag läuft, können Sie Protokolle abrufen, die von den `logger.info` Ausgaben erstellt wurden. Diese können verwertbare Informationen über den Fortschritt des SQD-IEF-PCM-Workflows liefern. Zum Beispiel die gleichen Spin-Orbital-Verbindungen oder die Zwei-Qubit-Tiefe des endgültigen ISA-Schaltkreises, der für die Ausführung in Hardware vorgesehen ist.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "a5b1f190",
      "metadata": {},
      "outputs": [],
      "source": [
        "print(job.logs())"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "ba179114",
      "metadata": {},
      "source": [
        "Die Abfrage des Auftragsergebnisses blockiert den Rest des Programms, bis ein Ergebnis vorliegt. Nach Abschluss der Arbeit können Sie die Ergebnisse abrufen. Dazu gehören die freie Solvatationsenergie sowie Informationen über die niedrigste Energiecharge, den niedrigsten Energiewert und andere nützliche Informationen wie die Gesamtdauer des Solvers.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "id": "3500adce",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "{'total_energy_hist': array([[-115.14768518, -115.1368396 , -114.19181692, -115.13745429,\n",
              "         -115.1445012 , -114.19673326, -115.1547003 , -114.20563866,\n",
              "         -115.13748344, -115.14764974],\n",
              "        [-115.15768392, -115.15850126, -115.15857275, -115.15770916,\n",
              "         -115.15801684, -115.15822125, -115.15833521, -115.15844051,\n",
              "         -115.15735538, -115.15862354],\n",
              "        [-115.15795148, -115.15847925, -115.15856677, -115.15811156,\n",
              "         -115.15815602, -115.15785171, -115.1583672 , -115.1585533 ,\n",
              "         -115.15833528, -115.15808791]]),\n",
              " 'spin_squared_value_hist': array([[5.37327508e-03, 1.32981759e-02, 1.36214922e-02, 8.84413615e-03,\n",
              "         7.26723578e-03, 1.94875195e-02, 3.03153152e-03, 6.07543106e-03,\n",
              "         1.04951849e-02, 5.36529204e-03],\n",
              "        [6.39397528e-04, 1.36814350e-04, 9.09054260e-05, 5.99361358e-04,\n",
              "         3.64261739e-04, 2.54905866e-04, 2.32540370e-04, 1.53181990e-04,\n",
              "         7.23519739e-04, 6.80737671e-05],\n",
              "        [4.53776416e-04, 1.63043449e-04, 1.05317263e-04, 3.82912836e-04,\n",
              "         3.41047803e-04, 5.18620393e-04, 2.06819142e-04, 1.17086537e-04,\n",
              "         2.32357159e-04, 4.26071537e-04]]),\n",
              " 'solvation_free_energy_hist': array([[-0.00725018, -0.00743955, -0.01132905, -0.0073377 , -0.00722221,\n",
              "         -0.01136705, -0.00719279, -0.01072829, -0.00733404, -0.00725961],\n",
              "        [-0.00719252, -0.00718315, -0.00718074, -0.00719325, -0.00717703,\n",
              "         -0.00718391, -0.00718354, -0.00717928, -0.00719887, -0.0071801 ],\n",
              "        [-0.00719351, -0.00718255, -0.00718198, -0.00718429, -0.00718349,\n",
              "         -0.00718329, -0.0071882 , -0.00718363, -0.00718549, -0.00718814]]),\n",
              " 'occupancy_hist': [[array([0.99712298, 0.99278936, 0.99083163, 0.97328469, 0.98959809,\n",
              "          0.98922134, 0.720333  , 0.25683194, 0.01939338, 0.02840332,\n",
              "          0.00946988, 0.0327204 ]),\n",
              "   array([0.99712298, 0.99278936, 0.99083163, 0.97328469, 0.98959809,\n",
              "          0.98922134, 0.720333  , 0.25683194, 0.01939338, 0.02840332,\n",
              "          0.00946988, 0.0327204 ])],\n",
              "  [array([0.9959042 , 0.9922607 , 0.99018862, 0.99265843, 0.98927447,\n",
              "          0.9900833 , 0.99403876, 0.00989025, 0.01120814, 0.01137717,\n",
              "          0.01152871, 0.01158725]),\n",
              "   array([0.9959042 , 0.9922607 , 0.99018862, 0.99265843, 0.98927447,\n",
              "          0.9900833 , 0.99403876, 0.00989025, 0.01120814, 0.01137717,\n",
              "          0.01152871, 0.01158725])],\n",
              "  [array([0.99590079, 0.99222193, 0.99016753, 0.99265045, 0.98927264,\n",
              "          0.99007179, 0.99407207, 0.00986684, 0.01125181, 0.01141439,\n",
              "          0.01150733, 0.01160243]),\n",
              "   array([0.99590079, 0.99222193, 0.99016753, 0.99265045, 0.98927264,\n",
              "          0.99007179, 0.99407207, 0.00986684, 0.01125181, 0.01141439,\n",
              "          0.01150733, 0.01160243])]],\n",
              " 'lowest_energy_batch': 2,\n",
              " 'lowest_energy_value': -115.1585667736213,\n",
              " 'solvation_free_energy': -0.007181981952470838,\n",
              " 'sci_solver_total_duration': 493.997501373291,\n",
              " 'metadata': {'resources_usage': {'RUNNING: MAPPING': {'CPU_TIME': 6.080063343048096},\n",
              "   'RUNNING: OPTIMIZING_FOR_HARDWARE': {'CPU_TIME': 1.999896764755249},\n",
              "   'RUNNING: WAITING_FOR_QPU': {'CPU_TIME': 6.2850868701934814},\n",
              "   'RUNNING: EXECUTING_QPU': {'QPU_TIME': 21.639373540878296},\n",
              "   'RUNNING: POST_PROCESSING': {'CPU_TIME': 495.40831995010376}},\n",
              "  'num_iterations_executed': 3}}"
            ]
          },
          "execution_count": 16,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "result = job.result()\n",
        "\n",
        "result"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "94a2c921",
      "metadata": {},
      "source": [
        "Beachten Sie, dass die Ergebnis-Metadaten eine Zusammenfassung der Ressourcennutzung enthalten, anhand derer Sie die für die einzelnen Workloads erforderliche QPU- und CPU-Zeit besser einschätzen können (dieses Beispiel wurde auf einem Dummy-Gerät ausgeführt, so dass die tatsächlichen Ressourcennutzungszeiten abweichen können).\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "49d0b26d",
      "metadata": {
        "vscode": {
          "languageId": "plaintext"
        }
      },
      "source": [
        "Nach Beendigung des Auftrags steht die gesamte Protokollierung zur Verfügung.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 17,
      "id": "ddcba564",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "2025-06-27 08:42:41,358\tINFO job_manager.py:531 -- Runtime env is setting up.\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,015: Starting runtime service\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:45,621: Backend: ibm_sherbrooke\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:46,809: Initializing molecule object\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,599: Performing CCSD\n",
            "Parsing /tmp/ray/session_2025-06-27_08-42-13_898146_1/runtime_resources/working_dir_files/_ray_pkg_4bc93dcc58c04b91/output_sqd_pcm/2025-06-27_08-42-45.fcidump.txt\n",
            "Overwritten attributes  get_ovlp get_hcore  of <class 'pyscf.scf.hf_symm.SymAdaptedRHF'>\n",
            "/usr/local/lib/python3.11/site-packages/pyscf/gto/mole.py:1293: UserWarning: Function mol.dumps drops attribute energy_nuc because it is not JSON-serializable\n",
            "  warnings.warn(msg)\n",
            "/usr/local/lib/python3.11/site-packages/pyscf/gto/mole.py:1293: UserWarning: Function mol.dumps drops attribute intor_symmetric because it is not JSON-serializable\n",
            "  warnings.warn(msg)\n",
            "converged SCF energy = -115.049680672847\n",
            "E(CCSD) = -115.1519910037652  E_corr = -0.1023103309180226\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,694: Same spin orbital connections: [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10), (10, 11)]\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:51,694: Opposite spin orbital connections: [(0, 0), (4, 4), (8, 8)]\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,718: Optimization level: 2, ops: OrderedDict([('rz', 2438), ('sx', 1496), ('ecr', 766), ('x', 185), ('measure', 24), ('barrier', 1)]), depth: 391\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,736: Two-qubit gate depth: 94\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:53,737: Submitting sampler job\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:54,273: Job ID: d1f5j3lqbivc73ebqpj0\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:42:54,313: Job Status: QUEUED\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,813: Starting configuration recovery iteration 0\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,841: Batch 0 subspace dimension: 531441\n",
            "2025-06-27 08:43:24,844\tINFO worker.py:1588 -- Using address 172.17.16.124:6379 set in the environment variable RAY_ADDRESS\n",
            "2025-06-27 08:43:24,847\tINFO worker.py:1723 -- Connecting to existing Ray cluster at address: 172.17.16.124:6379...\n",
            "2025-06-27 08:43:24,876\tINFO worker.py:1908 -- Connected to Ray cluster. View the dashboard at \u001b[1m\u001b[32mhttp://172.17.16.124:8265 \u001b[39m\u001b[22m\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,945: Batch 1 subspace dimension: 519841\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,950: Batch 2 subspace dimension: 543169\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,955: Batch 3 subspace dimension: 532900\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,960: Batch 4 subspace dimension: 534361\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,964: Batch 5 subspace dimension: 531441\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,969: Batch 6 subspace dimension: 540225\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,974: Batch 7 subspace dimension: 524176\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,979: Batch 8 subspace dimension: 537289\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:43:24,983: Batch 9 subspace dimension: 540225\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,006: Lowest energy batch: 6\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Lowest energy value: -115.15470029849135\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Corresponding g_solv value: -0.0071927910374866375\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: -----------------------------------\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:09,007: Starting configuration recovery iteration 1\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,564: Batch 0 subspace dimension: 413449\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,572: Batch 1 subspace dimension: 399424\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,578: Batch 2 subspace dimension: 438244\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,583: Batch 3 subspace dimension: 422500\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,589: Batch 4 subspace dimension: 409600\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,596: Batch 5 subspace dimension: 404496\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,601: Batch 6 subspace dimension: 410881\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,605: Batch 7 subspace dimension: 442225\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,611: Batch 8 subspace dimension: 409600\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:48:40,618: Batch 9 subspace dimension: 405769\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Lowest energy batch: 9\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Lowest energy value: -115.15862353596414\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,917: Corresponding g_solv value: -0.0071800982859467006\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,918: -----------------------------------\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:49:54,918: Starting configuration recovery iteration 2\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,501: Batch 0 subspace dimension: 399424\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,508: Batch 1 subspace dimension: 412164\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,514: Batch 2 subspace dimension: 432964\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,519: Batch 3 subspace dimension: 400689\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,524: Batch 4 subspace dimension: 432964\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,529: Batch 5 subspace dimension: 418609\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,533: Batch 6 subspace dimension: 418609\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,538: Batch 7 subspace dimension: 425104\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,543: Batch 8 subspace dimension: 404496\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:50:25,548: Batch 9 subspace dimension: 429025\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,900: Lowest energy batch: 2\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,900: Lowest energy value: -115.1585667736213\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: Corresponding g_solv value: -0.007181981952470838\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: -----------------------------------\n",
            "sqd_pcm_entrypoint.run_function:INFO:2025-06-27 08:51:37,901: SCI_solver totally takes: 493.997501373291 seconds\n",
            "\n"
          ]
        }
      ],
      "source": [
        "print(job.logs())"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "bf0750f3",
      "metadata": {},
      "source": [
        "<span id=\"cite-this-project\" />\n",
        "\n",
        "## Dieses Projekt zitieren\n",
        "\n",
        "Wenn Sie die SQD-IEF-PCM-Vorlage in Ihrer Forschung verwenden, finden Sie detaillierte Angaben zur Zitierweise im [Repository](https://github.com/qiskit-community/qiskit-function-templates/tree/main/chemistry/sqd_pcm#citing-this-project).\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "d7cc1cb2",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Nächste Schritte\n",
        "\n",
        "<Admonition type=\"info\" title=\"Empfehlungen\">\n",
        "  * Folgen Sie der Anleitung „[Berechnungen mit implizitem Lösungsmittel unter Verwendung von Qiskit Serverless](/docs/tutorials/implicit-solvent-calculations) “, um ein Beispiel für denselben Arbeitsablauf zu sehen\n",
        "  * Lesen Sie die Anleitung zum Erstellen einer Funktionsvorlage für [die Hamilton-Simulation](/docs/guides/function-template-hamiltonian-simulation)\n",
        "  * Sehen Sie sich die Quelldateien für diese Vorlage an [GitHub](https://github.com/qiskit-community/qiskit-function-templates/tree/main/chemistry/sqd_pcm)\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "aabba015",
      "metadata": {},
      "source": [
        "<span id=\"references\" />\n",
        "\n",
        "#### Referenzen\n",
        "\n",
        "\\[1] Danil Kaliakin, Akhil Shajan, Fangchun Liang, and Kenneth M. Merz Jr. [Implicit Solvent Sample-Based Quantum Diagonalization](https://pubs.acs.org/doi/10.1021/acs.jpcb.5c01030), The Journal of Physical Chemistry B, 2025, DOI: 10.1021/acs.jpcb.5c01030\n",
        "\n",
        "\\[2] Javier Robledo-Moreno, et al, [Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer](https://arxiv.org/abs/2405.05068), arXiv:2405.05068 \\[quant-ph].\n",
        "\n",
        "\\[3] Jeffery Yu, et al, [Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization](https://arxiv.org/abs/2501.09702), arXiv:2501.09702 \\[quant-ph].\n",
        "\n",
        "\\[4] Keita Kanno, et al, [Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers](https://arxiv.org/abs/2302.11320), arXiv:2302.11320 \\[quant-ph].\n",
        "\n",
        "\\[5] Kenji Sugisaki, et al, [Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer](https://arxiv.org/abs/2412.07218), arXiv:2412.07218 \\[quant-ph].\n",
        "\n",
        "\\[6] Mathias Mikkelsen, Yuya O. Nakagawa, [Quantum-selected configuration interaction with time-evolved state](https://arxiv.org/abs/2412.13839), arXiv:2412.13839 \\[quant-ph].\n",
        "\n",
        "\\[7] Herbert, John M. [Dielektrische Kontinuumsmethoden für die Quantenchemie. WIREs Computational Molecular Science](https://wires.onlinelibrary.wiley.com/doi/10.1002/wcms.1519), 2021, 11, 1759-0876.\n",
        "\n",
        "\\[8] Saki, A. A.; Barison, S.; Fuller, B.; Garrison, J. R.; Glick, J. R.; Johnson, C.; Mezzacapo, A.; Robledo-Moreno, J.; Rossmannek, M.; Schweigert, P. et al. Qiskit addon: stichprobenbasierte Quantendiagonalisierung, 2024; [https://github.com/Qiskit/qiskit-addon-sqd](https://github.com/Qiskit/qiskit-addon-sqd)\n",
        "\n",
        "\\[9] Asun, Q.; Zhang, X.; Banerjee, S.; Bao, P.; Barbry, M.; Blunt, N. S.; Bogdanow, N. A.; Booth, G. H.; Chen, J.; Cui, Z.-H. PySCF: Python -basierte Simulationen der chemischen Rahmenbedingungen, 2025; [https://github.com/pyscf/pyscf](https://github.com/pyscf/pyscf)\n",
        "\n",
        "\\[10] Kevin J. Sung; et al., FFSIM: Schnellere Simulationen von fermionischen Quantenschaltungen, 2024. [https://github.com/qiskit-community/ffsim](https://github.com/qiskit-community/ffsim)\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "id": "a1b8767d",
      "source": "© IBM Corp., 2017-2026"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "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"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}