From 8c164707b79ffc631fc9bac01c2253ff81c2b64d Mon Sep 17 00:00:00 2001 From: tankya2 Date: Mon, 4 Mar 2024 15:01:53 +0800 Subject: [PATCH] Add docstrings --- src/qibotn/mps_contraction_helper.py | 17 ++--------------- src/qibotn/mps_utils.py | 7 ++++--- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/qibotn/mps_contraction_helper.py b/src/qibotn/mps_contraction_helper.py index e4d827a..a3dc32d 100644 --- a/src/qibotn/mps_contraction_helper.py +++ b/src/qibotn/mps_contraction_helper.py @@ -7,17 +7,8 @@ class MPSContractionHelper: """A helper class to compute various quantities for a given MPS. Interleaved format is used to construct the input args for `cuquantum.contract`. - A concrete example on how the modes are populated for a 7-site MPS is provided - below:: - - 0 2 4 6 8 10 12 14 - bra -----A-----B-----C-----D-----E-----F-----G----- - | | | | | | | - 1| 3| 5| 7| 9| 11| 13| - | | | | | | | - ket -----a-----b-----c-----d-----e-----f-----g----- - 15 16 17 18 19 20 21 22 - + + Reference: https://github.com/NVIDIA/cuQuantum/blob/main/python/samples/cutensornet/tn_algorithms/mps_algorithms.ipynb The follwing compute quantities are supported: @@ -26,10 +17,6 @@ class MPSContractionHelper: - the expectation value for a given operator. - the equivalent state vector after multiplying an MPO to an MPS. - Note that for the nth MPS tensor (rank-3), the modes of the tensor are expected to be `(i,p,j)` - where i denotes the bonding mode with the (n-1)th tensor, p denotes the physical mode for the qubit and - j denotes the bonding mode with the (n+1)th tensor. - Args: num_qubits: The number of qubits for the MPS. """ diff --git a/src/qibotn/mps_utils.py b/src/qibotn/mps_utils.py index f0fa811..62c3f93 100644 --- a/src/qibotn/mps_utils.py +++ b/src/qibotn/mps_utils.py @@ -2,11 +2,10 @@ import cupy as cp from cuquantum import contract from cuquantum.cutensornet.experimental import contract_decompose -# Reference: https://github.com/NVIDIA/cuQuantum/blob/main/python/samples/cutensornet/tn_algorithms/mps_algorithms.ipynb def initial(num_qubits, dtype): - r"""Generate the MPS with an initial state of :math:`\ket{00...00}`""" + """Generate the MPS with an initial state of :math:`\ket{00...00}`""" state_tensor = cp.asarray([1, 0], dtype=dtype).reshape(1, 2, 1) mps_tensors = [state_tensor] * num_qubits return mps_tensors @@ -27,7 +26,9 @@ def mps_site_right_swap(mps_tensors, i, **kwargs): def apply_gate(mps_tensors, gate, qubits, **kwargs): """Apply the gate operand to the MPS tensors in-place. - + + # Reference: https://github.com/NVIDIA/cuQuantum/blob/main/python/samples/cutensornet/tn_algorithms/mps_algorithms.ipynb + Args: mps_tensors: A list of rank-3 ndarray-like tensor objects. The indices of the ith tensor are expected to be the bonding index to the i-1 tensor,