# the MetadataMap object makes some checks easier map_object = MetadataMap(mapping_file_to_dict(mapping_data, header), []) for axis in custom_axes: # append the field to the error queue that it belongs to if axis not in lookup_header: offending_fields.append(axis) break # make sure this value is in the mapping file elif axis not in color_by_column_names: color_by_column_names.append(axis) # perform only if the for loop does not call break else: # make sure all these axes are numeric for axis in custom_axes: if map_object.isNumericCategory(axis) == False: non_numeric_categories.append(axis) # make multiple checks for the add_vectors option if add_vectors != [None, None]: add_vectors = add_vectors.split(',') # check there are at the most two categories specified for this option if len(add_vectors) > 2: option_parser.error("The '--add_vectors' option can accept up to " "two different fields from the mapping file; currently trying " "to use %d (%s)." % (len(add_vectors), ', '.join(add_vectors))) # make sure the field(s) exist for col in add_vectors: # concatenated fields are allowed now so check for each field if '&&' in col: for _col in col.split('&&'):