6. chemicalsimilarity(2)
0[N]1[C
O]2[C
C
C]
0[N]1[C
O]2[C
C
C]3[C
C
C
C
C]
0[C]1[C
C
C]2[C
C
N
O]3[C
C
C
C
O
O]
0[C]1[C
C]2[C
C
C
C
O]3[C
C
N
O]
0[O]1[C]2[C
O]3[C
C
C]
0[C]1[C
O
O]2[C
C
C
O]
0[C]1[C
C]2[C
C]
0[C]1[C]2[C]3[C
O]
0[C]1[C
C
N]2[C
C
C
C
O]3[C
C
C
O]
...
7. chemicalsimilarity(3)
0[N]1[C
O]2[C
C
C]
0[N]1[C
O]2[C
C
C]3[C
C
C
C
C]
0[C]1[C
C
C]2[C
C
N
O]3[C
C
C
C
O
O]
0[C]1[C
C]2[C
C
C
C
O]3[C
C
N
O]
0[O]1[C]2[C
O]3[C
C
C]
0[C]1[C
O
O]2[C
C
C
O]
0[C]1[C
C]2[C
C]
0[C]1[C]2[C]3[C
O]
0[C]1[C
C
N]2[C
C
C
C
O]3[C
C
C
O]
...
0[N]1[C
O]2[C
C
C]3[C
C
C
C
C
C]
0[C]1[C
C
C]2[C
C
N
O]3[C
C
C
C
O
O]
0[C]1[C
C]2[C
C
C
C
O]3[C
C
N
O]
0[O]1[C]2[C
O]3[C
C
C
C]
0[C]1[C
O
O]2[C
C
C
O]
0[C]1[C
C]2[C
C]
0[N]1[C
O]2[C
C
C]
0[C]1[C]2[C]3[C
O]
0[C]1[C
C
N]2[C
C
C
C
O]3[C
C
C
O]
...
equalityviatanimoto
but31millioncalculations?
8. mongodbdatamodel(1)
{
"compound_cid"
:
"46200001"
,
"smiles"
:
"CCC1C(C(C(C(=NOCC=CCN2CCCCC2)C(CC(C(C(C(C(C(=O)O1)C)OC3C"
,
"fingerprint_count"
:
120
,
"fingerprints"
:
[
"0[N]1[C
O]2[C
C
C]"
,
"0[N]1[C
O]2[C
C
C]3[C
C
C
C
C]"
,
"0[C]1[C
C
C]2[C
C
N
O]3[C
C
C
C
O
O]"
,
"0[C]1[C
C]2[C
C
C
C
O]3[C
C
N
O]"
,
"0[O]1[C]2[C
O]3[C
C
C]"
,
"0[C]1[C
O
O]2[C
C
C
O]"
,
"0[C]1[C
C]2[C
C]"
,
"0[C]1[C]2[C]3[C
O]"
,
"0[C]1[C
C
N]2[C
C
C
C
O]3[C
C
C
O]"
,
...
]
,
}
compound
collection
9. mongodbdatamodel(2) fingerprint
collection
{
"fingerprint"
:
"0[N]1[C
O]2[C
C
C]",
"count"
:
472
}
{
"fingerprint"
:
"0[N]1[C
O]2[C
C
C]3[C
C
C
C
C]",
"count"
:
41
}
{
"fingerprint"
:
"0[O]1[C]2[C
O]3[C
C
C]",
"count"
:
1343
}
15. nativequery(2)
//
Execute
the
query
DBCursor
compounds
=
compoundsCollection.find(compoundquery);
//
Let's
process
the
found
compounds
locally
while(compounds.hasNext())
{
DBObject
compound
=
compounds.next();
BasicDBList
fingerprints
=
((BasicDBList)
compound.get(FINGERPRINTS_PROPERTY));
//
Calculate
the
intersection
on
the
total
list
of
fingerprints
fingerprints.retainAll(fingerprintsToFind);
if
(fingerprints.size()
>=
minnumberofcompoundfingerprints)
{
//
Calculate
the
tanimoto
coefficient
...
}
}