From a bit packed string, unpacks to get the wavefunction
        :param bytes coef_string:
        :return:

def from_bit_packed_string(coef_string):
        """
        From a bit packed string, unpacks to get the wavefunction
        :param bytes coef_string:
        :return:
        """
        num_octets = len(coef_string)

        # Parse the wavefunction
        wf = np.zeros(num_octets // OCTETS_PER_COMPLEX_DOUBLE, dtype=np.cfloat)
        for i, p in enumerate(range(0, num_octets, OCTETS_PER_COMPLEX_DOUBLE)):
            re_be = coef_string[p: p + OCTETS_PER_DOUBLE_FLOAT]
            im_be = coef_string[p + OCTETS_PER_DOUBLE_FLOAT: p + OCTETS_PER_COMPLEX_DOUBLE]
            re = struct.unpack('>d', re_be)[0]
            im = struct.unpack('>d', im_be)[0]
            wf[i] = complex(re, im)

        return Wavefunction(wf)