Source code for schrodinger.test.stu.outcomes.custom.enum

import collections
import csv

from rdkit import Chem

from schrodinger.application.pathfinder import molio
from schrodinger.test.stu.outcomes.failures import WorkupFailure


[docs]def check_smarts(smarts, filename): """ Check that every structure in a file maches the given SMARTS. """ reader = molio.get_mol_reader(filename) query = Chem.MolFromSmarts(smarts) for i, mol in enumerate(reader, 1): if not mol.HasSubstructMatch(query): smiles = Chem.MolToSmiles(mol) raise WorkupFailure( f'Mol {filename}:{i} ({smiles}) does not match {smarts}') return True
[docs]def check_csv(filename): """ Check that all the rows in a CSV file have the same number of columns. """ with open(filename, newline='') as fh: reader = csv.reader(fh) counter = collections.Counter(len(row) for row in reader) if len(counter) > 1: msg = 'CSV file {} has inconsistent number of columns: {}'.format( filename, counter) raise WorkupFailure(msg) return True