in codes/word_randomization.py [0:0]
def fixed_shuffle_numpy(lst, mask, percent=1.0):
to_permute = [i for i, m in enumerate(mask) if m]
num_permute = int(len(to_permute) * percent)
num_to_fix = len(to_permute) - num_permute
if num_to_fix > 0:
to_fix_ids = random.sample(to_permute, num_to_fix)
mask = [True if mask[i] or i in to_fix_ids else False for i in range(len(mask))]
# mask = [True if mask[i] or random.uniform(0,1) > percent else False for i,e in enumerate(mask)]
unfrozen_indices = [i for i, e in enumerate(lst) if not mask[i]]
unfrozen_set = lst[unfrozen_indices]
unfrozen_set_og = copy.deepcopy(unfrozen_set)
if len(unfrozen_set) > 1:
while True:
random.shuffle(unfrozen_set)
same_pos = sum(
[
1
for i, e in enumerate(unfrozen_set)
if unfrozen_set[i] == unfrozen_set_og[i]
]
)
if same_pos == 0:
break
lst[unfrozen_indices] = unfrozen_set