-
-
Save Anthony-Gandon/96285641fc2520ddf411d9f466ea7b7e to your computer and use it in GitHub Desktop.
QubitConverter_QubitMapper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"\n", | |
"from qiskit.algorithms.minimum_eigensolvers import VQE\n", | |
"from qiskit.algorithms.optimizers import SLSQP, SPSA\n", | |
"from qiskit.primitives import Estimator\n", | |
"\n", | |
"from qiskit_nature.second_q.algorithms import (GroundStateEigensolver, VQEUCCFactory)\n", | |
"from qiskit_nature.second_q.circuit.library import HartreeFock, UCC, UCCSD\n", | |
"from qiskit_nature.second_q.drivers import PySCFDriver\n", | |
"from qiskit_nature.second_q.mappers import JordanWignerMapper, ParityMapper\n", | |
"from qiskit_nature.second_q.mappers import QubitConverter\n", | |
"from qiskit_nature.second_q.hamiltonians import ElectronicEnergy\n", | |
"from qiskit_nature.second_q.algorithms import NumPyEigensolverFactory, ExcitedStatesEigensolver\n", | |
"\n", | |
"from qiskit.algorithms.minimum_eigensolvers import NumPyMinimumEigensolver\n", | |
"from qiskit.algorithms.eigensolvers import NumPyEigensolver\n", | |
"\n", | |
"from qiskit_nature.second_q.circuit.library import HartreeFock\n", | |
"from qiskit import QuantumCircuit\n", | |
"\n", | |
"from qiskit_nature.second_q.algorithms import QEOM\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 1) Test GroundtateEigensolver" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Main: QC\n", | |
"Auxop: QC\n", | |
"Main: MP\n", | |
"Auxop: MP\n", | |
"[-1.85727503]\n", | |
"[-1.85727503]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': 1.9999999999999893, 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': 1.3889487015553121, 'test_op': -1.8572750301445862}]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': 1.9999999999999893, 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': 1.3889487015553121, 'test_op': -1.8572750301445862}]\n", | |
"Main: QC\n", | |
"Auxop: QC\n", | |
"Main: MP\n", | |
"Auxop: MP\n", | |
"[-1.85727503]\n", | |
"[-1.85727503]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': 1.9999999999999991, 'XDipole': 0.0, 'YDipole': 0.0, 'test_op': -1.8572750301447267}]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': 1.9999999999999893, 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': 1.3889487015553121, 'test_op': -1.8572750301445862}]\n" | |
] | |
} | |
], | |
"source": [ | |
"def test_groundstate_eigensolver():\n", | |
" driver = PySCFDriver()\n", | |
"\n", | |
" reference_energy = -1.1373060356951838\n", | |
"\n", | |
" mapper = JordanWignerMapper()\n", | |
" qubit_converter = QubitConverter(mapper)\n", | |
" electronic_structure_problem = driver.run()\n", | |
" hamiltonian, second_q_ops = electronic_structure_problem.second_q_ops()\n", | |
" aux_op = {'test_op': hamiltonian}\n", | |
" num_spatial_orbitals = 2\n", | |
" num_particles = (1, 1)\n", | |
"\n", | |
" solver_qc = VQEUCCFactory(Estimator(), UCC(excitations=\"d\"), SLSQP())\n", | |
" calc_qc = GroundStateEigensolver(qubit_converter, solver_qc)\n", | |
" res_qc = calc_qc.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" solver_mp = VQEUCCFactory(Estimator(), UCC(excitations=\"d\"), SLSQP())\n", | |
" calc_mp = GroundStateEigensolver(mapper, solver_mp)\n", | |
" res_mp = calc_mp.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" print(res_qc.computed_energies)\n", | |
" print(res_mp.computed_energies)\n", | |
" \n", | |
" print(res_qc.aux_operators_evaluated)\n", | |
" print(res_mp.aux_operators_evaluated)\n", | |
"\n", | |
"def test_groundstate_eigensolver_z2sym():\n", | |
" driver = PySCFDriver()\n", | |
"\n", | |
" reference_energy = -1.1373060356951838\n", | |
"\n", | |
" mapper = JordanWignerMapper()\n", | |
" qubit_converter = QubitConverter(mapper, z2symmetry_reduction=\"auto\", two_qubit_reduction=True)\n", | |
" electronic_structure_problem = driver.run()\n", | |
" hamiltonian, second_q_ops = electronic_structure_problem.second_q_ops()\n", | |
" aux_op = {'test_op': hamiltonian}\n", | |
" num_spatial_orbitals = 2\n", | |
" num_particles = (1, 1)\n", | |
"\n", | |
" solver_qc = VQEUCCFactory(Estimator(), UCC(excitations=\"d\"), SLSQP())\n", | |
" calc_qc = GroundStateEigensolver(qubit_converter, solver_qc)\n", | |
" res_qc = calc_qc.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" solver_mp = VQEUCCFactory(Estimator(), UCC(excitations=\"d\"), SLSQP())\n", | |
" calc_mp = GroundStateEigensolver(mapper, solver_mp)\n", | |
" res_mp = calc_mp.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" print(res_qc.computed_energies)\n", | |
" print(res_mp.computed_energies)\n", | |
" \n", | |
" print(res_qc.aux_operators_evaluated)\n", | |
" print(res_mp.aux_operators_evaluated)\n", | |
"\n", | |
"\n", | |
"test_groundstate_eigensolver()\n", | |
"test_groundstate_eigensolver_z2sym()\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 2) Test ExcitedStatesSolver" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Main: QC\n", | |
"Auxop: QC\n", | |
"Main: MP\n", | |
"Auxop: MP\n", | |
"[-1.85727503 -0.88272215 -0.22491125]\n", | |
"[-1.85727503 -0.88272215 -0.22491125]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999998+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553197+0j), 'test_op': (-1.8572750302023793+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999996+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553201+0j), 'test_op': (-0.8827221502448648+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999998+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553206+0j), 'test_op': (-0.22491125283087152+0j)}]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999998+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553197+0j), 'test_op': (-1.8572750302023793+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999996+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553201+0j), 'test_op': (-0.8827221502448648+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999998+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553206+0j), 'test_op': (-0.22491125283087152+0j)}]\n", | |
"Main: QC\n", | |
"Auxop: QC\n", | |
"Main: MP\n", | |
"Auxop: MP\n", | |
"[-1.85727503 -0.22491125]\n", | |
"[-1.85727503e+00 -1.25633907e+00 -1.25633907e+00 -1.24458455e+00\n", | |
" -1.24458455e+00 -1.24458455e+00 -1.16063174e+00 -1.16063174e+00\n", | |
" -8.82722150e-01 -4.71896007e-01 -4.71896007e-01 -3.53325104e-01\n", | |
" -3.53325104e-01 -2.24911253e-01 -3.88578059e-16 2.14278238e-01]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.999999999999999+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'test_op': (-1.8572750302023784+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.999999999999999+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'test_op': (-0.22491125283087143+0j)}]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999998+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553197+0j), 'test_op': (-1.8572750302023793+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (0.5+0j), 'ParticleNumber': (1+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (0.6944743507776601+0j), 'test_op': (-1.2563390730032502+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (-0.5+0j), 'ParticleNumber': (1+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (0.6944743507776601+0j), 'test_op': (-1.2563390730032502+0j)}, {'AngularMomentum': (1.9999999999999996+0j), 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999996+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553201+0j), 'test_op': (-1.2445845498133274+0j)}, {'AngularMomentum': (2+0j), 'Magnetization': (1+0j), 'ParticleNumber': (2+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553204+0j), 'test_op': (-1.2445845498133274+0j)}, {'AngularMomentum': (2+0j), 'Magnetization': (-1+0j), 'ParticleNumber': (2+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553204+0j), 'test_op': (-1.2445845498133274+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (0.5+0j), 'ParticleNumber': (3+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (2.08342305233298+0j), 'test_op': (-1.1606317377577646+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (-0.5+0j), 'ParticleNumber': (3+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (2.0834230523329804+0j), 'test_op': (-1.1606317377577646+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999996+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553201+0j), 'test_op': (-0.8827221502448648+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (0.5+0j), 'ParticleNumber': (1+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (0.6944743507776605+0j), 'test_op': (-0.4718960072811429+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (-0.5+0j), 'ParticleNumber': (1+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (0.6944743507776605+0j), 'test_op': (-0.4718960072811429+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (0.5+0j), 'ParticleNumber': (3+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (2.083423052332981+0j), 'test_op': (-0.3533251041071557+0j)}, {'AngularMomentum': (0.75+0j), 'Magnetization': (-0.5+0j), 'ParticleNumber': (3+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (2.083423052332981+0j), 'test_op': (-0.3533251041071557+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (1.9999999999999998+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (1.3889487015553206+0j), 'test_op': (-0.22491125283087152+0j)}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': 0.0, 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': 0.0, 'test_op': 0.0}, {'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': (4+0j), 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': (2.7778974031106407+0j), 'test_op': (0.21427823841947244+0j)}]\n" | |
] | |
} | |
], | |
"source": [ | |
"def filter_criterion(eigenstate, eigenvalue, aux_values):\n", | |
" return np.isclose(aux_values[\"ParticleNumber\"][0], 2.0) and np.isclose(aux_values[\"AngularMomentum\"][0], 0.0)\n", | |
"\n", | |
"\n", | |
"def test_excitedstates_eigensolver():\n", | |
" driver = PySCFDriver()\n", | |
"\n", | |
" reference_energy = -1.1373060356951838\n", | |
"\n", | |
" mapper = JordanWignerMapper()\n", | |
" qubit_converter = QubitConverter(mapper)\n", | |
" electronic_structure_problem = driver.run()\n", | |
" hamiltonian, second_q_ops = electronic_structure_problem.second_q_ops()\n", | |
" aux_op = {'test_op': hamiltonian}\n", | |
" num_spatial_orbitals = 2\n", | |
" num_particles = (1, 1)\n", | |
"\n", | |
" solver_qc = NumPyEigensolverFactory(filter_criterion=filter_criterion)\n", | |
" calc_qc = ExcitedStatesEigensolver(qubit_converter, solver_qc)\n", | |
" res_qc = calc_qc.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" solver_mp = NumPyEigensolverFactory(filter_criterion=filter_criterion)\n", | |
" calc_mp = ExcitedStatesEigensolver(mapper, solver_mp)\n", | |
" res_mp = calc_mp.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" print(res_qc.computed_energies)\n", | |
" print(res_mp.computed_energies)\n", | |
" \n", | |
" print(res_qc.aux_operators_evaluated)\n", | |
" print(res_mp.aux_operators_evaluated)\n", | |
"\n", | |
"def test_excitedstates_eigensolver_z2sym():\n", | |
" driver = PySCFDriver()\n", | |
"\n", | |
" reference_energy = -1.1373060356951838\n", | |
"\n", | |
" mapper = JordanWignerMapper()\n", | |
" qubit_converter = QubitConverter(mapper, z2symmetry_reduction=\"auto\", two_qubit_reduction=True)\n", | |
" electronic_structure_problem = driver.run()\n", | |
" hamiltonian, second_q_ops = electronic_structure_problem.second_q_ops()\n", | |
" aux_op = {'test_op': hamiltonian}\n", | |
" num_spatial_orbitals = 2\n", | |
" num_particles = (1, 1)\n", | |
" \n", | |
" solver_qc = NumPyEigensolverFactory()\n", | |
" calc_qc = ExcitedStatesEigensolver(qubit_converter, solver_qc)\n", | |
" res_qc = calc_qc.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" solver_mp = NumPyEigensolverFactory()\n", | |
" calc_mp = ExcitedStatesEigensolver(mapper, solver_mp)\n", | |
" res_mp = calc_mp.solve(electronic_structure_problem, aux_operators=aux_op)\n", | |
" \n", | |
" print(res_qc.computed_energies)\n", | |
" print(res_mp.computed_energies)\n", | |
" \n", | |
" print(res_qc.aux_operators_evaluated)\n", | |
" print(res_mp.aux_operators_evaluated)\n", | |
"\n", | |
"\n", | |
"test_excitedstates_eigensolver()\n", | |
"test_excitedstates_eigensolver_z2sym()\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 3) Test QEOM vibrational_ops builder" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 4) Test Ansatzes" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"True\n" | |
] | |
} | |
], | |
"source": [ | |
"def test_ucc_ansatz():\n", | |
" mapper = JordanWignerMapper()\n", | |
" converter = QubitConverter(mapper)\n", | |
" \n", | |
" ansatz_qc = UCC(\n", | |
" qubit_converter=converter,\n", | |
" num_particles=(2, 2),\n", | |
" num_spatial_orbitals=4,\n", | |
" excitations=\"t\",\n", | |
" )\n", | |
" \n", | |
" ansatz_mp = UCC(\n", | |
" qubit_converter=mapper,\n", | |
" num_particles=(2, 2),\n", | |
" num_spatial_orbitals=4,\n", | |
" excitations=\"t\",\n", | |
" )\n", | |
" \n", | |
" print(ansatz_qc.operators == ansatz_mp.operators)\n", | |
" \n", | |
"test_ucc_ansatz()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 5) Test Hartee Fock" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" ┌───┐\n", | |
"q_0: ┤ X ├\n", | |
" └───┘\n", | |
"q_1: ─────\n", | |
" ┌───┐\n", | |
"q_2: ┤ X ├\n", | |
" └───┘\n", | |
"q_3: ─────\n", | |
" \n", | |
" ┌───┐\n", | |
"q_0: ┤ X ├\n", | |
" └───┘\n", | |
"q_1: ─────\n", | |
" ┌───┐\n", | |
"q_2: ┤ X ├\n", | |
" └───┘\n", | |
"q_3: ─────\n", | |
" \n" | |
] | |
} | |
], | |
"source": [ | |
"def test_HF():\n", | |
" state_qc = HartreeFock(2, (1, 1), QubitConverter(JordanWignerMapper()))\n", | |
" state_mp = HartreeFock(2, (1, 1), JordanWignerMapper())\n", | |
" \n", | |
" print(state_qc)\n", | |
" print(state_mp)\n", | |
" \n", | |
"test_HF()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 6) Test QEOM" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"With qEOM the auxiliary operators can currently only be evaluated on the ground state.\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Main: QC\n", | |
"Auxop: QC\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"With qEOM the auxiliary operators can currently only be evaluated on the ground state.\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Main: MP\n", | |
"Auxop: MP\n", | |
"[-1.85727503 -1.24458675 -0.88272435 -0.22491345]\n", | |
"[-1.85727503 -1.24458675 -0.88272435 -0.22491345]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': 1.999999999999985, 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': 1.3889489297269892, 'test_op': -1.8572750301449046}]\n", | |
"[{'AngularMomentum': 0.0, 'Magnetization': 0.0, 'ParticleNumber': 1.999999999999985, 'XDipole': 0.0, 'YDipole': 0.0, 'ZDipole': 1.3889489297269892, 'test_op': -1.8572750301449046}]\n" | |
] | |
} | |
], | |
"source": [ | |
"def test_qeom():\n", | |
" mapper = JordanWignerMapper()\n", | |
" converter = QubitConverter(mapper)\n", | |
" driver = PySCFDriver()\n", | |
" esp = driver.run()\n", | |
" hamiltonian, second_q_ops = esp.second_q_ops()\n", | |
" aux_op = {'test_op': hamiltonian}\n", | |
" \n", | |
" estimator = Estimator()\n", | |
" solver = VQEUCCFactory(estimator, UCCSD(), SLSQP())\n", | |
" \n", | |
" gsc_qc = GroundStateEigensolver(converter, solver)\n", | |
" esc_qc = QEOM(gsc_qc, estimator, \"sd\")\n", | |
" results_qc = esc_qc.solve(esp, aux_operators = aux_op)\n", | |
" \n", | |
" gsc_mp = GroundStateEigensolver(mapper, solver)\n", | |
" esc_mp = QEOM(gsc_mp, estimator, \"sd\")\n", | |
" results_mp = esc_mp.solve(esp, aux_operators = aux_op)\n", | |
" \n", | |
" print(results_qc.computed_energies)\n", | |
" print(results_mp.computed_energies)\n", | |
" \n", | |
" print(results_qc.aux_operators_evaluated)\n", | |
" print(results_mp.aux_operators_evaluated)\n", | |
"\n", | |
" \n", | |
"test_qeom()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3.9.6 ('qiskit_38_git')", | |
"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.9.6" | |
}, | |
"orig_nbformat": 4, | |
"vscode": { | |
"interpreter": { | |
"hash": "c23d0bc06ef4418175036bf679a995f216aae1ef50c693f851eb63af89d8be8d" | |
} | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment