Substitution in ChemDASH is defined by 3 parameters: the probability that a substitution event is attempted at any given Chem-DASH step, the species in the system that can be doped out, and a pool of possible atoms that can be doped into the system. The substitution pool is defined as a fixed-length list of atoms that each have equal probability of being chosen to be doped in to the structure at a given substitution event. When atom A in the structure is doped out for atom B from the substitution pool, A replaces B in the substitution pool such that the substitution is always reversible. The substitution pool can be of any length, contain any number of unique species and can contain a given species any number of times. Adjusting the relative proportion of different species in the substitution pool effectively allows for weighting of probabilities. The probability of species x i being chosen as a substituent is therefore equal to the proportion of x i in the substitution pool.