Beispiel #1
0
def test_SubSearchAccuracy():
    db_mock = utils.setupMockDB()
    write.WriteFromSDF(db_mock.molecules, 'data/test_data/first_200.props.sdf')
    substructure.AddPatternFingerprints(db_mock.molecules)
    db_python = utils.setupPythonDB('data/test_data/first_200.props.sdf')
    for i in range(200):
        moldoc = db_python[i]
        pattern = Chem.Mol(moldoc['rdmol'])
        results_python = utils.SubSearchPython(pattern, db_python)
        results = substructure.SubSearch(pattern, db_mock.molecules)
        assert sorted(results_python) == sorted(results)
Beispiel #2
0
def test_zeroThreshold():
    """
    If we search the database with a Tanimoto threshold of zero, we should get
    the entire contents of the database back.
    """
    db_python = utils.setupPythonDB('data/test_data/first_200.props.sdf')
    db_mongo = utils.setupMockDB()
    write.WriteFromSDF(db_mongo.molecules, 'data/test_data/first_200.props.sdf')
    similarity.AddMorganFingerprints(db_mongo.molecules, db_mongo.mfp_counts)

    mol = Chem.Mol(db_python[0]['rdmol'])
    assert 200 == len(utils.similaritySearchPython(mol, db_python, 0))
    assert 200 == len(similarity.SimSearchAggregate(mol, db_mongo.molecules, db_mongo.mfp_counts, 0))
    assert 200 == len(similarity.SimSearch(mol, db_mongo.molecules, db_mongo.mfp_counts, 0))
Beispiel #3
0
def test_similarityAccuracy():
    """
    Tests for basic accuracy against a brute-force constructed Python 'database'
    at thresholds 0.2, 0.4, 0.6, 0.8, and 1. This test is implemented using MongoMock.
    """
    db_python = utils.setupPythonDB('data/test_data/first_200.props.sdf')
    db_mongo = utils.setupMockDB()
    write.WriteFromSDF(db_mongo.molecules, 'data/test_data/first_200.props.sdf')
    similarity.AddMorganFingerprints(db_mongo.molecules, db_mongo.mfp_counts)
    thresholds = [0.2, 0.4, 0.6, 0.8, 1]
    for t in thresholds:
        for i in range(200):
            mol = Chem.Mol(db_python[i]['rdmol'])
            search_python = utils.similaritySearchPython(mol, db_python, t)
            search_mongo = similarity.SimSearch(mol, db_mongo.molecules, db_mongo.mfp_counts, t)
            assert sorted(search_python) == sorted(search_mongo)
Beispiel #4
0
def test_similarityProgression():
    """
    Tests that decreasing similarity thresholds return increasing result lists.
    This test is implemented using MongoMock.
    """
    db_python = utils.setupPythonDB('data/test_data/first_200.props.sdf')
    db_mongo = utils.setupMockDB()
    write.WriteFromSDF(db_mongo.molecules, 'data/test_data/first_200.props.sdf')
    similarity.AddMorganFingerprints(db_mongo.molecules, db_mongo.mfp_counts)
    thresholds = [1, 0.8, 0.6, 0.4, 0.2]
    for i in range(200):
        mol = Chem.Mol(db_python[i]['rdmol'])
        last = []
        for t in thresholds:
            search_mongo = similarity.SimSearch(mol, db_mongo.molecules, db_mongo.mfp_counts, t)
            assert len(search_mongo) >= len(last)
            assert (all(l in search_mongo for l in last))
            last = search_mongo
Beispiel #5
0
def test_addPatternFingerprints():
    db = utils.setupMockDB()
    write.WriteFromSDF(db.molecules, 'data/test_data/first_200.props.sdf')
    substructure.AddPatternFingerprints(db.molecules)
    counter = 0
    assert db.molecules.count_documents({"fingerprints.pattern_fp": {"$exists": True}}) == 200