def get_pseudos(options): """ Find pseudos in paths, return :class:`DojoTable` object sorted by atomic number Z. Accepts filepaths or directory. """ exts = ("psp8",) paths = options.pseudos if len(paths) == 1 and os.path.isdir(paths[0]): top = os.path.abspath(paths[0]) # print("top", top) paths = find_exts(top, exts, exclude_dirs="_*") # table = DojoTable.from_dir(paths[0]) pseudos = [] for p in paths: try: pseudos.append(Pseudo.from_file(p)) except Exception as exc: warn("Error in %s:\n%s. This pseudo will be ignored" % (p, exc)) table = DojoTable(pseudos) # Here we select a subset of pseudos according to family or rows if options.rows: table = table.select_rows(options.rows) elif options.family: table = table.select_families(options.family) if options.symbols: table = table.select_symbols(options.symbols) return table.sort_by_z()
def get_pseudos(options): """ Find pseudos in paths, return :class:`DojoTable` object sorted by atomic number Z. Accepts filepaths or directory. """ exts = ("psp8", "xml") paths = options.pseudos if len(paths) == 1: # Handle directory argument if os.path.isdir(paths[0]): top = os.path.abspath(paths[0]) paths = find_exts(top, exts, exclude_dirs="_*") # Handle glob syntax e.g. "./*.psp8" elif "*" in paths[0]: paths = glob.glob(paths[0]) if options.verbose > 1: print("Will read pseudo from: %s" % paths) pseudos = [] for p in paths: try: pseudo = dojopseudo_from_file(p) if pseudo is None: cprint("[%s] Pseudo.from_file returned None. Something wrong in file!" % p, "red") continue pseudos.append(pseudo) except Exception as exc: cprint("[%s] Python exception. This pseudo will be ignored" % p, "red") if options.verbose: print(exc) table = DojoTable(pseudos) # Here we select a subset of pseudos according to family or rows if options.rows: table = table.select_rows(options.rows) elif options.family: table = table.select_families(options.family) # here we select chemical symbols. if options.symbols: table = table.select_symbols(options.symbols) return table.sort_by_z()