def ValidateOptions():
    """Validate option values"""
    
    MiscUtil.ValidateOptionFilePath("-i, --infile", Options["--infile"])
    MiscUtil.ValidateOptionFileExt("-i, --infile", Options["--infile"], "sdf sd mol smi csv tsv txt")

    MiscUtil.ValidateOptionsOutputFileOverwrite("-o, --outfile", Options["--outfile"], "--overwrite", Options["--overwrite"])
    MiscUtil.ValidateOptionsDistinctFileNames("-i, --infile", Options["--infile"], "-o, --outfile", Options["--outfile"])
    
    if not re.match("^None$", Options["--alignmentSMARTS"], re.I):
        PatternMol = Chem.MolFromSmarts(Options["--alignmentSMARTS"])
        if PatternMol is None:
            MiscUtil.PrintError("The value specified, %s, using option \"--alignmentSMARTS\" is not a valid SMARTS: Failed to create pattern molecule" % Options["--alignmentSMARTS"])
    
    MiscUtil.ValidateOptionIntegerValue("--atomLabelFontSize", Options["--atomLabelFontSize"], {">": 0})
    MiscUtil.ValidateOptionFloatValue("-b, --bondLineWidth", Options["--bondLineWidth"], {">": 0.0})
    
    MiscUtil.ValidateOptionTextValue("--compute2DCoords", Options["--compute2DCoords"], "yes no auto")
    
    MiscUtil.ValidateOptionTextValue("--counterCol", Options["--counterCol"], "yes no")
    MiscUtil.ValidateOptionTextValue("--colVisibility", Options["--colVisibility"], "yes no")
    
    MiscUtil.ValidateOptionTextValue("--f, -fontBold", Options["--fontBold"], "yes no")
    
    if not re.match("^None$", Options["--highlightSMARTS"], re.I):
        PatternMol = Chem.MolFromSmarts(Options["--highlightSMARTS"])
        if PatternMol is None:
            MiscUtil.PrintError("The value specified, %s, using option \"--highlightSMARTS\" is not a valid SMARTS: Failed to create pattern molecule" % Options["--highlightSMARTS"])
    
    MiscUtil.ValidateOptionTextValue("--kekulize", Options["--kekulize"], "yes no")
    
    MiscUtil.ValidateOptionTextValue("-k, --keysNavigation", Options["--keysNavigation"], "yes no")
    
    MiscUtil.ValidateOptionNumberValues("-m, --molImageSize", Options["--molImageSize"], 2, ",", "integer", {">": 0})
    MiscUtil.ValidateOptionTextValue("--molImageEncoded", Options["--molImageEncoded"], "yes no")
    
    MiscUtil.ValidateOptionIntegerValue("--numOfMolsPerRow", Options["--numOfMolsPerRow"], {">": 0})
    
    MiscUtil.ValidateOptionTextValue("-p, --paging", Options["--paging"], "yes no")
    MiscUtil.ValidateOptionIntegerValue("--pageLength", Options["--pageLength"], {">": 0})
    
    MiscUtil.ValidateOptionTextValue("--popover", Options["--popover"], "yes no")
    MiscUtil.ValidateOptionIntegerValue("--popoverDataCount", Options["--popoverDataCount"], {">": 0})
    MiscUtil.ValidateOptionIntegerValue("--popoverTextWidth", Options["--popoverTextWidth"], {">": 0})
    
    MiscUtil.ValidateOptionTextValue("--showMolName", Options["--showMolName"], "yes no")
    
    MiscUtil.ValidateOptionTextValue("--scrollX", Options["--scrollX"], "yes no")
    MiscUtil.ValidateOptionTextValue("--scrollY", Options["--scrollY"], "yes no")
    if not re.search("vh$", Options["--scrollYSize"], re.I):
        MiscUtil.ValidateOptionIntegerValue("--scrollYSize", Options["--scrollYSize"], {">": 0})

    MiscUtil.ValidateOptionTextValue("--tableFooter", Options["--tableFooter"], "yes no")
    MiscUtil.ValidateOptionTextValue("--tableHeader", Options["--tableHeader"], "yes no")
def ValidateOptions():
    """Validate option values"""

    MiscUtil.ValidateOptionIntegerValue("--figDPI", Options["--figDPI"],
                                        {">": 0})
    if not re.match("^auto$", Options["--figSize"], re.I):
        MiscUtil.ValidateOptionNumberValues("--figSize", Options["--figSize"],
                                            2, ",", "float", {">": 0})

    MiscUtil.ValidateOptionFilePath("-i, --infile", Options["--infile"])
    MiscUtil.ValidateOptionFileExt("-i, --infile", Options["--infile"],
                                   "pdb cif")

    MiscUtil.ValidateOptionTextValue("-g, --greek", Options["--greek"],
                                     "yes no")

    MiscUtil.ValidateOptionTextValue("--grid", Options["--grid"], "yes no")
    MiscUtil.ValidateOptionFloatValue("--gridLineWidth",
                                      Options["--gridLineWidth"], {">": 0})

    MiscUtil.ValidateOptionTextValue(
        "--levelsAndColorsScheme", Options["--levelsAndColorsScheme"],
        "MuttedColorShades1 MuttedColorShades2 BrightColorShades")

    MiscUtil.ValidateOptionsOutputFileOverwrite("-o, --outfile",
                                                Options["--outfile"],
                                                "--overwrite",
                                                Options["--overwrite"])

    MiscUtil.ValidateOptionTextValue("--outMode", Options["--outMode"],
                                     "SingleFile MultipleFiles")
    MiscUtil.ValidateOptionIntegerValue("-p, --precision",
                                        Options["--precision"], {">": 0})

    MiscUtil.ValidateOptionFloatValue("--scatterMarkerSize",
                                      Options["--scatterMarkerSize"], {">": 0})

    if not re.match("^auto$", Options["--ticksMajorInterval"], re.I):
        MiscUtil.ValidateOptionIntegerValue("--ticksMajorInterval",
                                            Options["--ticksMajorInterval"], {
                                                ">": 0,
                                                "<": 360
                                            })

    MiscUtil.ValidateOptionTextValue("--ticksMinor", Options["--ticksMinor"],
                                     "yes no")
    if not re.match("^auto$", Options["--ticksMinorInterval"], re.I):
        MiscUtil.ValidateOptionIntegerValue("--ticksMinorInterval",
                                            Options["--ticksMinorInterval"], {
                                                ">": 0,
                                                "<": 360
                                            })