The substitution_threshold keyword assigns a probability between 0 and 1 that a substitution event occurs at a given step. As this probability is assigned at each step there is no guarantee that proportion of substitution steps over the whole run will be equal to the substitution_threshold. The species chosen from the substitution pool and the species to be doped out are both chosen at random within the constraints of the substitutable_atoms keyword. As a substituent atom is exchanged for the doped out atom, both the substitution pool and the structure will be updated through the ChemDASH run. The probability of each atom in the substitution pool being chosen for a given substitution event is equal and as such a central composition will eventually be found if enough substitution events are accepted.