Inputting monomers. A key functionality of PySoftK is the automated generation of a diverse range of polymer architectures. The user-inputted monomers, in which the sites that link each monomer together are predefined, are the main topological descriptor used by PySoftK. The chemical structure and connectivity of the monomer(s) that make up the polymer can be inputted using all formats supported by RDKit, such as SMILES strings and .pdb, .mol and .xyz files, as shown in Listing 1. Examples of inputs to input a furan monomer are shown in Figure . In order to construct a polymer from its constituent monomers, a placeholder atom is used to indicate where the bond formation takes place during polymerization. In the examples presented in this manuscript, bromine (Br) atoms or platinum (Pt) are used as these placeholder atoms (see Fig. ). It is important to note that this choice is entirely arbitrary: any atom can be used as the placeholder atom. specific modules are provided to generate homopolymers, diblock copolymers and random polymers. Block and random copolymers with more than two types of monomers, as well as alternating, periodic and statistical copolymers of any number of monomers, can be built using the patterned module within PySoftK. The modular structure of the software allows users to develop their own codes to design additional polymer topologies. In the following sections, examples of the different modules to build the various polymer topologies with different distributions of the monomers are provided.