def _assemble_rdm1(evals) -> numpy.ndarray:
    '\n            Returns spin-ful or spin-free one-particle RDM built by symmetry conditions\n            Same symmetry with or without spin, so we can use the same function\n            '
    N = (n_MOs if spin_free else n_SOs)
    rdm1 = numpy.zeros([N, N])
    ctr: int = 0
    for p in range(N):
        for q in range((p + 1)):
            rdm1[(p, q)] = evals[ctr]
            rdm1[(q, p)] = rdm1[(p, q)]
            ctr += 1
    return rdm1
Returns spin-ful or spin-free one-particle RDM built by symmetry conditions
Same symmetry with or without spin, so we can use the same function
def _assemble_rdm1(evals) -> numpy.ndarray:
    '\n            Returns spin-ful or spin-free one-particle RDM built by symmetry conditions\n            Same symmetry with or without spin, so we can use the same function\n            '
    N = (n_MOs if spin_free else n_SOs)
    rdm1 = numpy.zeros([N, N])
    ctr: int = 0
    for p in range(N):
        for q in range((p + 1)):
            rdm1[(p, q)] = evals[ctr]
            rdm1[(q, p)] = rdm1[(p, q)]
            ctr += 1
    return rdm1