def is_valid_input(ext):
    """ Checks if input file format is compatible with Open Babel """
    formats = ['abinit', 'acesout', 'acr', 'adfout', 'alc', 'aoforce',
        'arc', 'axsf', 'bgf', 'box', 'bs', 'c09out', 'c3d2', 'caccrt',
        'can', 'car', 'castep', 'ccc', 'cdjson', 'cdx', 'cdxml', 'cif',
        'ck', 'cml', 'cmlr', 'CONFIG', 'CONTCAR', 'CONTFF', 'crk2d',
        'crk3d', 'ct', 'cub', 'cube', 'dallog', 'dalmol', 'dat', 'dmol',
        'dx', 'ent', 'exyz', 'fa', 'fasta', 'fch', 'fchk', 'fck', 'feat',
        'fhiaims', 'fract', 'fs', 'fsa', 'g03', 'g09', 'g92', 'g94', 'g98',
        'gal', 'gam', 'gamess', 'gamin', 'gamout', 'got', 'gpr', 'gro',
        'gukin', 'gukout', 'gzmat', 'hin', 'HISTORY', 'inchi', 'inp', 'ins',
        'jin', 'jout', 'log', 'lpmd', 'mcdl', 'mcif', 'MDFF', 'mdl', 'ml2',
        'mmcif', 'mmd', 'mmod', 'mol', 'mol2', 'mold', 'molden', 'molf',
        'moo', 'mop', 'mopcrt', 'mopin', 'mopout', 'mpc', 'mpo', 'mpqc',
        'mrv', 'msi', 'nwo', 'orca', 'out', 'outmol', 'output', 'pc',
        'pcjson', 'pcm', 'pdb', 'pdbqt', 'png', 'pos', 'POSCAR', 'POSFF',
        'pqr', 'pqs', 'prep', 'pwscf', 'qcout', 'res', 'rsmi', 'rxn', 'sd',
        'sdf', 'siesta', 'smi', 'smiles', 'smy', 'sy2', 't41', 'tdd',
        'text', 'therm', 'tmol', 'txt', 'txyz', 'unixyz', 'VASP', 'vmol',
        'xml', 'xsf', 'xtc', 'xyz', 'yob']
    return ext in formats
