The input is provided as a CSV file. The targets of atomic properties must be a 1D list in the same order as the atoms in the RDKit 8 molecule object. The bond properties can either be a 2D list of shape n × n, where n is the number of atoms, or a 1D list in the same order as the bonds in the RDKit molecule object. An example file with both atomic and bond targets is shown in Table . It is also important to note that Chemprop can autodetect whether a target should be an atomic or bond target. Alternatively, the --keeping_atom_map option can be used if users wish to use atommapped SMILES. To apply the summation constraint to properties for each molecule, a path to the constraints can be specified using the keyword --constraints_path PATH/TO/CONSTRAINTS in the same order as the SMILES strings in the data file. Different constraints should be separated into different columns with a header row and one row per molecule, and the file should not contain the SMILES string. Which targets will be constrained is controlled by the names of the tasks in the constraint file header. For properties without constraints, the atomic or bond embeddings will be linked with FFN layers. Conversely, for properties with sum constraints, attention-based layers will also be constructed for each target. By default, the atom tasks share FFN weights, and bond tasks share FFN weights so that the FFN weights might benefit from multitask training. The argument --no_shared_atom_bond_ffn can be used if users want to train the FFN weights for each task independently. The argument --no_adding_bond_types will let the bond types of each bond determined by RDKit molecules not be added to the output of bond targets. For attention-based constraining, the argument --weights_ffn_num_layers can be used to change the number of layers in the FFN for determining weights used to correct the constrained targets (default 2).