def METHOD_NAME(self) -> None:
    num_qubit = 6
    num_traceout = 4
    sv = StateVector(num_qubit)
    sv.set_Haar_random_state(seed=0)
    svv = np.atleast_2d(sv.get_vector()).T
    mat = np.dot(svv, svv.T.conj())
    target = np.arange(num_qubit)
    np.random.shuffle(target)
    target = target[:num_traceout]
    target_cor = [num_qubit - 1 - i for i in target]
    target_cor.sort()
    dmt = mat.reshape([2, 2] * num_qubit)
    for cnt, val in enumerate(target_cor):
        ofs = num_qubit - cnt
        dmt = np.trace(dmt, axis1=val - cnt, axis2=ofs + val - cnt)
    dmt = dmt.reshape(
        [2 ** (num_qubit - num_traceout), 2 ** (num_qubit - num_traceout)]
    )
    pdm = partial_trace(sv, target)  # type: ignore
    assert np.allclose(pdm.get_matrix(), dmt), "check pure state partial trace"